android XXXActivity和getApplicationContext()區別

來源:互聯網
上載者:User

標籤: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()區別

聯繫我們

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