Context與ApplicationContext

來源:互聯網
上載者:User

標籤:

Android開發中經常會用到Context,從英文角度釋義“情境”。從程式角度,Context是一個抽象類別,通過代碼可以發現Activity、Service、Application都是Context的子類。

Activity、Service、Application都是繼承自ContextWrapper。

 

接下來我們來看看Context與ApplicationContext,前者是Activity的Context,後者是Application的Context。

Activity的Context肯定跟隨Activity的生命週期而變化,後一種Application的Context隨著Application的變化而變化,跟隨Application的一生。

 

Application的Context是一個全域靜態變數,SDK的說明是只有當你引用這個context的生命週期超過了當前activity的生命週期,而和整個應用的生命週期掛鈎時,才去使用這個application的context。

一種推薦的用法就是應用程式註冊廣播broadcast時,使用這個context。

引用application context並不會導致記憶體流失。引用activity的context才會導致記憶體流失,當你的引用對象的生命週期超過了當前activity的生命週期時,系統回收你的activity時發現還有一個context的強引用,而不去銷毀這個activity,導致記憶體流失,在開發過程中,需要非常重視這點(一個全域靜態變數在引用context時一定要使用application的Context, 而不要使用activity的)

Context與ApplicationContext

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.