標籤:context this getapplicationcontex
從接觸android起,到處都能看到context(上下文)的身影,查看源碼之後你會發現,它只是個抽象類別,具體實現都在ContextWrapper實現。
當你去查看android的源碼時,你會發現activity,service和application都繼承自ContextWrapper,也就是說它們都是context的子類,那我們應該如何給context的賦值呢?
很多時候在acitivity中給context賦值時直接傳一個this,這個this就是xxxActivity.this,也就是XXXActivity的上下文,當然剛開始不懂的時候會直接寫getApplicationContext(),當然兩者的區別是很明顯的,XXXActivity.this返回的當前Activity的執行個體,getApplicationContext()返回的是application的執行個體,兩者的生命週期差很多,application貫穿整個app,activity的生命週期相信你很清楚了,所以不能亂用,防止記憶體流失
1.dialog
dialog依附於activity存在,所以直接用XXXActivity.this就好,當activity消失的時候dialog也就銷毀了
2.activity
上面我們已經說過了,直接使用XXXActivity.this,返回的是當前的activity執行個體,當前activity銷毀時,一起銷毀
3.service,broadcastReceiver
兩者都可以
總結:和UI操作相關的不建議使用getApplicationContext(),一般都使用和activity相關的context,其餘的操作,看具體情況,根據存在的生命週期的長度作出選擇
還有就是很抱歉,暫時還不打算更新IM部分,先研究照相機的這部分,後期更新
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
android XXXActivity和getApplicationContext()區別