1. 程式人生 > >Android中Application類總結

Android中Application類總結

application類的使用

  要使用自定義的Application,首先就是要自己新建一個Application的子類,然後把它的名字寫在manifest檔案裡面的application標籤裡的android:name屬性就行,如我的Application子類名字是BaseApplication,則:

     android:name=".BaseApplication"

1.初始化資源

  由於Application類是在APP啟動的時候就啟動,啟動在所有Activity之前,所以可以使用它做資源的初始化操作,如圖片資源初始化,WebView的預載入,推送服務的註冊等等,注意不要執行耗時操作,會拖慢APP啟動速度。

2.資料全域性共享

  • 可以設定一些全域性的共享常量,如一些TAG,列舉值等。
  • 可以設定一些全域性使用的共享變數資料,如一個全域性的Handler等等,但是要注意,這裡快取的變數資料的作用週期只在APP的生命週期,如果APP因為記憶體不足而結束的話,再開啟這些資料就會消失,所以這裡只能儲存一些不重要的資料來使資料全APP共享,想要儲存重要資料的話需要SharePreference、資料庫或者檔案儲存等這些本地儲存。
  • 可以設定一些靜態方法來讓其他類呼叫,來使用Application裡面的全域性變數,如實現APP一鍵退出功能時候會用到。

onCreate              在建立應用程式時建立 onTerminate         當終止應用程式物件時呼叫,不保證一定被呼叫,當程式是被核心終止以便為其他應用程式釋放資源,那 麼將不會提醒,並且不呼叫應用程式的物件的onTerminate方法而直接終止進 程 onLowMemory     當後臺程式已經終止資源還匱乏時會呼叫這個方法。好的應用程式一般會在這個方法裡面釋放一些不必 要的資源來應付當後臺程式已經終止,前臺應用程式記憶體還不夠時的情況。 onConfigurationChanged        配置改變時觸發這個方法

2:通過Application傳遞資料

1
2
     假如有一個Activity A, 跳轉到 Activity B ,並需要推薦一些資料,通常的作法是Intent.putExtra() 讓Intent攜帶,或者有一個Bundle把資訊加入Bundle讓Intent推薦Bundle物件,實現傳遞。但這樣作有一個問題在 於,Intent和Bundle所能攜帶的資料型別都是一些基本的資料型別,如果想實現複雜的資料傳遞就比較麻煩了,通常需要實現 Serializable或者Parcellable介面。這其實是Android的一種IPC資料傳遞的方法。如果我們的兩個Activity在同一個 程序當中為什麼還要這麼麻煩呢,只要把需要傳遞的物件的引用傳遞過去就可以了。
    基本思路是這樣的。在Application中建立一個HashMap ,以字串為索引,Object為value這樣我們的HashMap就可以儲存任何型別的物件了。在Activity A中把需要傳遞的物件放入這個HashMap,然後通過Intent或者其它途經再把這索引的字串傳遞給Activity B ,Activity B 就可以根據這個字串在HashMap中取出這個物件了。只要再向下轉個型 ,就實現了物件的傳遞。

3:Application資料快取

  我一般會習慣在application中建立兩個HashMap一個用於資料的傳遞,一個用於緩 存一些資料。比如有一個Activity需要從網站獲取一些資料,獲取完之後我們就可以把這個資料cache到Application 當中,當頁面設定到其它Activity再回來的時候,就可以直接使用快取好的資料了。但如果需要cache一些大量的資料,最好是cache一些 (軟引用)SoftReference ,並把這些資料cache到本地rom上或者sd卡上。如果在application中的快取不存在,從本地快取查詢,如果本地快取的資料也不存在再從網 絡上獲取。