本節書摘來自異步社群《android應用開發》一書中的第2章,第2.4節應用類,作者 【美】chris haseman,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
2.4 應用類
android應用開發
一個典型的android應用是一個由活動、廣播接收方、服務和内容提供方組成的集合。應用類是把所有這些不同的部分粘合成一個單一的、相融合的實體的“膠水”。每當清單檔案中初始化一個内容提供方、活動、服務或意圖接收方的時候,也同時啟動一個應用類,并使其可用。
2.4.1 預設的應用聲明
檢視androidmanifest.xml檔案,會看到一個典型的應用類聲明如下所示:
可以看到标記。清單裡的這部分内容在典型情況下包含與應用相關的資訊。android:icon告訴系統在主應用清單中顯示什麼圖示。這裡的android:label指的是此前編輯過的strings.xml檔案中的另一個資料項。
2.4.2 自定義應用
添加自定義應用所要采取的步驟與添加一個新活動時非常類似。
(1)在現有的androidmanifest.xml清單檔案中添加一個名字域。
(2)在擴充application類的程式包内建立一個新的應用類。
(3)利用新應用類。
下面詳細介紹步驟(1)和步驟(2)。你自己完成步驟(3)。
1.名字
關于清單檔案中的名字, android:name不是指所描述的對象的名字,而是指該類在java程式包内的位置。應用的聲明也是一樣。帶有新聲明的應用的開始标記如下所示;
這個聲明告訴系統在android應用清單中想用什麼圖示來代表這個應用。
類裝載程式會将android:name的内容附加到在的開始标記内部的程式包聲明的末尾,以此尋找應用類的位置。現在需要真正建立這個應用類,以滿足類裝載程式。
2.應用類
在最基本的層次上,如下代碼可以建立一個應用類:
應用可以是一個非常簡單的類。如果不了解以下幾個方面,就很難了解應用類能做什麼。
活動非常短暫。
活動不能通路彼此的存儲空間,它們通過意圖來通信。
由于各種原因,活動不斷被終止和啟動,活動無法知道自己是否是應用運作期間内的第一次啟動。而另一方面,隻有在應用初始化的時候才調用應用類的oncreate方法。
是以,應用很适合于執行隻有在應用第一次啟動時才會發生的動作。
對于可能涉及多個活動的資料,需要一個臨時的存放地,屬于應用類一部分的某個資料成員是很便于存儲它的地方。
向應用類中添加資料必須非常小心。在清單檔案中聲明的任何單一構件,從最簡單的broadcastreceiver到最複雜的活動,在由系統建立之前,都會首先建立應用類對象。這意味着必須讓應用類的oncreate方法運作得盡可能快。
2.4.3 通路應用
對于所有的廣播接收方、服務、活動和内容提供方,合适的父類都會提供給它們一個名為getapplication的方法。如果清單檔案中指定了一個應用類對象,那麼,getapplication被調用時會傳回一個指向該對象的指針。既然已經聲明、建立了這個類,通路它就非常簡單,調用getapplication方法,把傳回的對象映射到一個指針執行個體上即可。如下所示:
確定在應用類對象中的任何位置儲存的任何資料都是相關資料,因為為應用類對象配置設定存儲空間和初始化的時間耗費可能會成為影響啟動時間的因素。