3 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
Waqas的答案非常明確和完整,但我想進(jìn)一步澄清使用this
vs. getBaseContext()
或getApplication()
vs. 之間的區(qū)別getApplicationContext()
。雙方Activity
并Application
延長(zhǎng)不是Context
本身,而是ContextWrapper
,這是一個(gè)
“代理實(shí)現(xiàn)
Context
它只是將所有調(diào)用委托給另一個(gè)Context
”。
這種“真實(shí)”的背景是你通過使用得到的getBaseContext()
。
因此,雖然this
(for Activity
)和getBaseContext()
兩者都給出了活動(dòng)背景,但它們
(a)不要引用同一個(gè)對(duì)象(
this != getBaseContext()
)和(b)呼叫上下文的
this
效率稍差,因?yàn)楹艚薪?jīng)過了額外的間接。不過,我懷疑它是否有任何實(shí)際意義。
同樣的邏輯也適用于getApplication()
對(duì)getApplicationContext()
。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
LoginActivity.this
上面的行是一個(gè)活動(dòng),它是一個(gè)上下文。這是在你創(chuàng)建一些AlertDialogs時(shí)使用的......在某些地方它必須使用Activity Context ...
getApplication()
同樣,make文本方法需要Context和Application本身實(shí)現(xiàn) Context
getApplicationContext()
這是最優(yōu)選的方式,因?yàn)樗恢?code>Context存在,直到應(yīng)用程序關(guān)閉。
getBaseContext()
此上下文可用于窗口小部件和視圖。
但是他們所有人都提供了一個(gè)Context對(duì)象而沒有別的東西。
- 3 回答
- 0 關(guān)注
- 660 瀏覽
添加回答
舉報(bào)