android開發之重寫Application類
在android應用開發中,重寫Application也算是比較常見的,以前開發的一些程式太過於簡單,都不要重寫這個類,但是在真正的商業開發中,重寫Application類幾乎是必做的。
為什麼要重寫Application?
1.處理全域變數,在整個應用程式範圍內共用資料
2.管理Activity,當應用程式退出時,銷毀所有的Activity
3.初始化應用程式的配置資訊
4.當系統記憶體不足時應用能夠做出合理的響應
…..
繼承了Application之後,一定要在資訊清單檔中聲明,即指明Application節點的name屬性即可:
重寫的Application類:
/** * 注意,在重寫方法時必須調用超類的事件處理常式 * @author 王松 * @date 2015年7月30日 */public class MyApplication extends Application { private String globalVar; private MyApplication instance; private List activities; /** * 單例模式 * @return */ public MyApplication getInstance(){ if(instance == null) return new MyApplication(); return instance; } /** * 添加activity * @param a */ public void addActivity(Activity a){ activities.add(a); } /** * 遍曆所有Activity並finish */ public void finishActivity() { for (Activity activity : activities) { if (activity != null && !activity.isFinishing()) { activity.finish(); } } } public String getGlobalVar() { return globalVar; } public void setGlobalVar(String globalVar) { this.globalVar = globalVar; } /** * 在建立應用程式時調用,可以重寫這個方法來執行個體化應用程式單態,以及建立和執行個體化任何應用 * 程式狀態變數或共用資源 */ @Override public void onCreate() { super.onCreate(); activities = new LinkedList(); } /** * 作為onLowMemory的一個特定於應用程式的替代選擇,在android4.0時引入, * 在程式運行時決定當前應用程式應該嘗試減少其記憶體開銷時(通常在它進入後台時)調用 * 它包含一個level參數,用於提供請求的上下文 */ @Override public void onTrimMemory(int level) { super.onTrimMemory(level); } /** * 與Activity不同,在配置改變時,應用程式物件不會被終止和重啟。 * 如果應用程式使用的值依賴於特定的配置,則重寫這個方法來重新載入這些值,或者在應用程式層級處理這些值的改變 */ @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); } /** * 當系統處於資源匱乏時,具有良好行為的應用程式可以釋放額外的記憶體。 * 這個方法一般只會在後台進程已經終止,但是前台應用程式仍然缺少記憶體時調用。 * 我們可以重寫這個程式來清空緩衝或者釋放不必要的資源 */ @Override public void onLowMemory() { super.onLowMemory(); }}
關鍵地方都已用注釋說明。
那麼怎麼在Activity中使用這個類呢?
MyApplication mp = (MyApplication) getApplication(); mp.setGlobalVar(張三);
就是這麼簡單,不過大多情況下我們都會用Map來儲存全域變數,這裡為了簡單,就直接使用了String。