Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開發之重寫Application類

android開發之重寫Application類

日期:2017/2/23 15:53:28      編輯:關於Android編程

在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。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved