天天看點

Android應用開發—Application

What is Application

Application和Activity,Service一樣是android架構的一個系統元件,當android程式啟動時系統會建立一個application對象,用來存儲系統的一些資訊。通常我們是不需要指定一個Application的,這時系統會自動幫我們建立,如果需要建立自己的Application,也很簡單建立一個類繼承 Application并在manifest的application标簽中進行注冊(隻需要給Application标簽增加個name屬性把自己的 Application的名字定入即可)。

android系統會為每個程式運作時建立一個Application類的對象且僅建立一個,是以Application可以說是單例 (singleton)模式的一個類。且application對象的生命周期是整個程式中最長的,它的生命周期就等于這個程式的生命周期。因為它是全局的單例的,是以在不同的Activity,Service中獲得的對象都是同一個對象。是以通過Application來進行一些資料傳遞,資料共享,資料緩存等操作。

Data passing between components using Application

假如有一個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中取出這個對象了。隻要再向下轉個型 ,就實作了對象的傳遞。

Data caching in Application

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

Android Application的作用

繼續閱讀