1. 程式人生 > >兩種Context的區別,Activity 和Application

兩種Context的區別,Activity 和Application

 Application(getApplicationContext()) Context是和應用程式關聯的,在應用的生命週期內總是一樣的。

Activity(this) Context是關聯在某個獲得上的隨著Activity的銷燬而被銷燬多次。

在觀看黑馬視訊的時候,老師也提到了這個問題

下面內容摘自部落格 http://liuyun025.iteye.com/blog/1139970

在android中常常會遇到與context有關的內容,特寫下這篇blog,淺論一下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。