天天看點

Application context和Activity context的差別

    • 這是兩種不同的context,也是最常見的兩種.第一種中context的生命周期與Application的生命周期相關的,context随着Application的銷毀而銷毀,伴随application的一生,與activity的生命周期無關.第二種中的context跟Activity的生命周期是相關的,但是對一個Application來說,Activity可以銷毀幾次,那麼屬于Activity的context就會銷毀多次.

      至于用哪種context,得看應用場景,個人感覺用Activity的context好一點,不過也有的時候必須使用Application的context.application context可以通過Context.getApplicationContext或者Activity.getApplication方法擷取.

      還有就是,在使用context的時候,小心記憶體洩露,防止記憶體洩露,注意一下幾個方面:

      1. 不要讓生命周期長的對象引用activity context,即保證引用activity的對象要與activity本身生命周期是一樣的

      2. 對于生命周期長的對象,可以使用application context

      3. 避免非靜态的内部類,盡量使用靜态類,避免生命周期問題,注意内部類對外部對象引用導緻的生命周期變化

      現在回到正題,說一下android全局變量,在平時的開發過程中,有時候可能會需要一些全局資料,來讓應用中的所有Activity和View都能通路到,大家在遇到這種情況時,可能首先會想到自己定義一個類,然後建立很多靜态成員,android已經為我們提供了這種情況的解決方案:

      在Android中,有一個Application類,在Activity中可以使用getApplication()方法獲得執行個體,使用它就可以獲得目前應用的主題、資源檔案中的内容等,這個類更靈活的一個特性就是可以被繼承,來添加自己的全局屬性.

繼續閱讀