91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Activity.this和getApplicationContext()的區別

發布時間:2020-07-06 00:10:42 來源:網絡 閱讀:916 作者:沒有水勒魚 欄目:移動開發

在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 摧毀他就摧毀

getBaseContext()  返回由構造函數指定或setBaseContext()設置的上下文

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

措美县| 虞城县| 溧阳市| 大田县| 株洲市| 广汉市| 彝良县| 临桂县| 南华县| 蕉岭县| 永安市| 那曲县| 泰来县| 峨眉山市| 新昌县| 栾城县| 县级市| 英吉沙县| 临沂市| 盘山县| 新平| 富蕴县| 于田县| 互助| 固始县| 广饶县| 元朗区| 波密县| 汝城县| 建始县| 呼和浩特市| 威远县| 祁东县| 娱乐| 稻城县| 丰县| 廉江市| 工布江达县| 保靖县| 安西县| 全椒县|