android開發之重寫Application類

來源:互聯網
上載者:User

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。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.