Android入門筆記之源碼解析四
<1>簡介
仿京東商城客戶端源碼分析。
<2>關鍵步驟
主要有6個Activity,MainActivity爲主Activity。
主要是Tab佈局和佈局文件的編寫,具體功能都沒有實現。
其中ExitManager繼承了Application,裏面有個activity的list,採用單例模式,當application結束時,依次結束所有activity。
<3>知識點
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來進行一些,數據傳遞,數據共享 等,數據緩存等操作。
Datapassing between components using Application
假如有一個ActivityA, 跳轉到 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中取出這個對象了。只要再向下轉個型 ,就實現了對象的傳遞。
<4>代碼及解釋
效果截圖:
源代碼地址:
http://download.csdn.net/detail/gmj4850/6327433