計算機套用技術專業畢業設計:Android手機播放器

3.2android應用程式結構解析

通常由以下四個組件來構建一個完整的android應用程式。

①活動

②意圖接收器

③服務

④內容提供者

然而,並不是所有的android應用程式都必須具備上面的四個組件,可以由上面的一個或幾個來組建。當決定使用以上哪些組件來構建android應用程式時,需要將它們註冊在androidmanifest.xml檔案中,這是一個xml配置檔案,在這個檔案中可以聲明應用程式組件以及它們的特性和要求。這個配置檔案是每個android應用程式所必需的。

3.2.1活動

活動是以上四個組件中最常用的一個。每個活動都是activity的子類,並實現了一些獨有的功能,如管理ui顯示和ui的反饋事件。一個活動就相當於應用程式的一個用戶界面,由事件回響以及視圖等組成。大多數的應用程式通常包括多個界面。例如:一個文本聊天應用程式,至少應該包含一個聯繫人列表界面、一個聊天界面、一個設定界面、一個聊天記錄查詢界面等等。每個界面其實都可看作是一個活動。顯示一個新界面就相當於生成一個對應的活動對象。在一些情況下,活動能夠返回給它的上級界面一個返回值,例如一個提供給用戶選擇照片的活動可以返回給它的調用者用戶選擇了哪個照片檔案。

當一個新的活動出現時,前一個活動被中斷並被放入到一個歷史堆疊中。用戶可以使用返回鍵使前一個活動重現。當一個活動不再需要時,可以將它們從歷史堆疊中移除。默認情況下,android會為每個應用程式保留從主界面開始的歷史堆疊。

android通過一個被稱作意圖的特殊類,來實現界面與界面之間的跳轉。一個意圖描述了一個應用程式想要做什麼。在意圖的描述結構中,含有兩個重要的數據結構:動作和動作對應的數據。典型的動作類型包括main、view、pick、edit等等,而動作對應的數據則以uri的形式表示。例如:顯示一個聯繫人信息的界面,可以創建一個意圖,並將它的動作設定成view,數據設定成表示這個人信息的uri。

除此之外,還有一個被稱作意圖過濾器(intentfiher)的相關類。當發生一個有效的目的請求時,意圖過濾器用來描述一個活動能夠處理什麼意圖。如上例中所描述,想要正常顯示一個聯繫人信息的界面,必須聲明一個意圖過濾器,它說明當有聯繫人數據要被在界面上顯示時,知道如何處理它們。通常意圖過濾器要被註冊在androidmanifest.xml檔案中。從一個界面跳轉到另一個界面是由解析各種意圖實現的。例如:一個活動使用startactivity(myintent)來調用其他活動時,系統會查找所有已經安裝的應用程式的意圖過濾器,並從中挑選出能夠匹配myintent意圖的活動。隨後,這個新的活動接收到意圖(myintent)的通知並開始運行。當startactivity方法被調用,解析意圖的處理過程隨之發生,這個機制有以下兩個突出的優點:

活動可以通過一個以意圖形式產生的請求來重用其他組件的功能。

活動可以在任何時候被一個具有等價意圖過濾器的新活動所替代。

3.2.2意圖接收器

當想要編寫代碼來對外部事件做一些處理時,可以使用意圖接收器。意圖接收器並不顯示ui界面,它是通過notificationmanager來通知用戶他們感興趣的事件發生了。意圖接收器同樣可以被註冊在androidmanifest.xml檔案中,同時也可以在代碼中使用context.registerreceiver()來註冊自己的意圖接收器。當一個意圖接收器被觸發時,系統會根據需要來啟動應用程式。

3.2.3服務

服務是具有長生命周期並且沒有用戶界面的代碼。

3.2.4內容提供者

在android中,每個應用程式都是有自己的userid及在自己的進程中執行。這樣做的好處是,可以保護系統及應用程式,避免被其他不正常的應用程式所影響。可以把每個進程想像成是一個黑盒子,彼此不會互相影響,連記憶體的資料都無法共享。如果應用程式之間想要共享數據,就需要使用用內容提供者。一個內容提供者就是一個類,它實現了一個標準的方法集合。其他的應用程式可以使用這些方法來保存和檢索此內容提供者處理過的數據。

3.3 intent的詳細解析

在一個android套用中,主要是由四種組件組成的,這四種組件可參考上一節的內容。而這四種組件是獨立的,它們之間可以互相調用,協調工作,最終組成一個真正的android套用。在這些組件之間的通訊中,主要是由意圖協助完成的。意圖負責對套用中一次操作的動作、動作對應的數據、附加數據進行描述,android則根據此意圖的描述,負責找到相應的組件,將意圖傳遞給它,並完成組件的調用。因此,意圖在這裡起著一個媒體中介的作用,專門提供組件之間互相調用的相關信息,實現調用者與被調用者之間的解耦。