1. 程式人生 > >Android中Application元件的基礎用法。

Android中Application元件的基礎用法。

關於Application的一些用法的總結:

一、Application大家應該是不太陌生的。他有許多的自有特性可以幫助我們處理很多棘手的問題。本文也將從Application的特性著手,總結如何利用好Application。如果讀者已經是對application相當瞭解,請繞行。

   Application是安卓系統元件之一,不在公認的四大核心元件之中,但是和activity、service相比有許多的共同點,最大的共同點都是Context的子孫類。很多人認為安卓應該有五大核心元件,其中就應該加上application。這是面試的一個坑。

二、Application的建立:

   1.Application的自動建立:每一個應用程式在執行時,系統都會自動幫你建立一個

application類的物件,並且只會建立一個。

.  2.Application的手動建立:程式設計師可以自己建立一個類來繼承自Application,但是需要在建立完畢之後在專案清單檔案,即每一個安卓專案的倒數第四行的AndroidManifest.xml檔案中進行註冊。相對於其他元件來說Application的註冊特別簡單。因為每一個程式只能有一個application,所以直接在專案清單檔案中的Application節點的屬性中新增name屬性即可。name屬性可以直接提示。手寫格式為類所在包名加“.”加類名。


三、Application的特性及靈活運用:

1Application

的唯一性:每一個程式執行時只會存在一個Application程式執行會先啟動Application(沒有類來繼承就自動執行),系統會建立一個PID,即程序ID,所有的Activity都會在此程序上執行。

2application的先入後出屬性:因為每一個程式程序都是在Application中執行的,所以Application在程式中是必須是最先執行,並且在所有的系統元件都退出之後才應該被銷燬掉的,不然就無法保證程式每次的正常執行。這個特性就決定了Application的許多用途。

   1.整個系統在最開始執行時所需要的,並且會被多次呼叫的資料,可以直接在Application中進行準備,並且直接儲存。其他地方呼叫會更加方便,避免了程式碼的重複以及不必要的一些程式碼的重複工作,降低了整個程式的執行消耗。


   2.Context物件的賦予:整個android中許多地方都要用到Context物件來呼叫Context的子孫類所擁有的的一些方法或者提供底層API的一些方法所需引數。因為application也是Context的子孫類,它繼承自Context的子類ContextWrapper,所以就可以通過在它的onCreat()方法中對自身物件賦值,並提供一個返回值為Application的方法來為程式的其他類中提供Context的物件。具體程式碼更加簡單:


   這裡就提供了一個獲取到context物件的方法。應用範圍特別廣,如下程式碼中,ContentResolver的初始化需要一個context物件來呼叫getContentResolver()方法。


 3.避免一些公用API物件的重用,減少記憶體的消耗。在上圖中大家可以看到有一個Volley框架中的RequestQueue物件。瞭解Volley的應該都知道谷歌官網曾經明確提出,RequestQueue每一個程式都只需要構建一次,谷歌推薦使用單例,並且單例也足夠解決你需要使用到的所有問題。因此將它建立在除application之外的任何地方都是不恰當的,都有可能出現重複建立的問題。

   4.資料的傳遞與儲存:Application中可以自我的建立一些物件或集合等來進行類與類之間的資料傳遞。比如說在主介面中點選listview的一項item,需要跳轉到其他activity中進行詳細處理,這時就可以通過在點選跳轉前將這個item資料的物件給Application中建立的同一個類的物件賦值,另一個activity啟用時直接從Application中獲取資料即可。很多地方資料的傳輸都可以用Application進行儲存和獲取,比如前幾天有朋友碰到的一個activity與另一個activity中的fragment之間需要傳遞資料,想了很長時間沒有想到合適的辦法,這種就可以直接用application來進行操作,一邊封裝一邊獲取,僅此而已。

   靈活運用所學才是一個優秀程式設計師應該具有的素質。很多事情可以用特別簡單的程式碼解決就用簡單的程式碼完成,降低執行成本的同時也極大地增強了程式碼的可讀性。在以後的不斷工作中如果遇到其他Application的用法,會及時在這裡給大家更新。