getApplicationContext()

來源:互聯網
上載者:User

標籤:存在   cat   問題   表示   很多   oid   and   class   生命週期   

在Android中常常會遇到與context有關的內容,大多都是作為參數在傳遞,但是它的作用究竟是什麼呢

先說它的用法,舉個例子

在語句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求傳遞的參數就是一個context,在這裡我們傳入的是this,那麼這個this究竟指的是什麼呢? 這裡的this指的是Activity.this,是這個語句所在的Activity的this,是這個Activity 的上下文。網上有很多朋友在這裡傳入this.getApplicationContext(),這是不對的。 AlertDialog對象是依賴於一個View的,而View是和一個Activity對應的。 於是,這裡涉及到一個生命週期的問題,this.getApplicationContext()取的是這個應用程式的Context,Activity.this取的是這個Activity的Context,這兩者的生命週期是不同的,前者的生命週期是整個應用,後者的生命週期只是它所在的Activity。而AlertDialog應該是屬於一個Activity的,在Activity銷毀的時候它也就銷毀了,不會再存在;但是,如果傳 入this.getApplicationContext(),就表示它的生命週期是整個應用程式,這顯然超過了它的生命週期了。 所以,在這裡我們只能使用Activity的this。

 

下面具體解釋它的內涵

其實Activity.this就是context的一個具體,Activity.this是你當前所在的activity的上下文,this.getApplicationContext()取得的是整個應用的上下文,在你把他們作為參數傳遞的時候,多數是用來標註你要在哪個activity裡面進行操作,比如上文提到的AlertDialog.Builder builder = new AlertDialog.Builder(this);你是要在當前的activity裡面建立對話方塊,如果傳遞的是this.getApplicationContext(),這是整個應用的上下文,代碼怎麼會知道你想在哪個具體的activity裡面建立對話方塊呢,所以,在這裡應該傳入的是你想建立對話方塊的那個activity的上下文,即Activity.this.如果這你都理解了,那麼你也該明白,每個activity都有自己的上下文,而整個應用只有一個上下文.

 

 

總結

getApplicationContext()
返回應用的上下文,生命週期是整個應用,應用摧毀它才摧毀。

Activity.this 

返回當前activity的上下文,生命週期只是它所在的Activity,activity 摧毀他就摧毀

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.