目錄html
1.概述android
7.靜態單列共享數據和Application對象共享數據的對比函數
經過學習Android提供的Application類,瞭解相關用法,對Application類進行擴展,主要用於維護應用中的全局狀態(整個應用中的全局變量),好比qq中暱稱在qq整個應用各處均可獲取並使用。學習
Application和Activity,Service同樣是Android框架的一個系統組件,當Android程序啓動時系統會建立一個Application對象,是維護應用全局狀態的基類,用來存儲系統的一些信息。Android系統自動(默認的,無論你有沒有定義)會爲每一個程序運行時建立一個Application類的對象且只建立一個,因此Application能夠說是單例(singleton)模式的一個類。以下清單文件mainiftest中的application就是整個基類。ui
每一個應用進程默認啓動以後都會建立一個application對象,其餘的組件能夠經過全局上下文環境訪問這個對象,可是application是系統定義的,咱們沒法修改代碼。好在咱們能夠擴展application類,讓Android系統使用咱們自定義的Application類建立Application對象。
第一步:自定義類繼承Application基類
第二步:mainiftest文件中添加name屬性
當程序運行時,咱們經過查看建立的Application對象,得知是咱們本身定義的MyApplication類
Application對象的生命週期是整個程序中最長的,它的生命週期就等於這個程序的生命週期。不通的activity互相切換,可是Application對象都是同一個。
Application對象是有Android系統管理,他的回調函數運行於ui線程,也就是主線程,運行過程當中主要的回掉方法
由於Application是全局的單例的,因此在不一樣的Activity,Service中得到的對象都是同一個對象。因此能夠經過Application來進行一些,如:數據傳遞、數據共享和數據緩存等操做。以下,我麼在自定義的Application類中定義一個變量,在響應的地方設置,也能夠在響應的地方獲取
咱們定義一個單列類
這樣咱們在應用中也能夠經過這個單列類進行數據共享,那麼和Application相比較,靜態單列模塊化更好,Application至關於一個Context因此具備訪問資源的能力,可是單列也能夠經過接受Context參數進行訪問資源,Application的回調和和生命週期徹底由Android系統控制,咱們沒法干預,可是使用單列就更加靈活,推薦使用單列。