3 回答

TA贡献2011条经验 获得超2个赞
Waqas的答案非常明确和完整,但我想进一步澄清使用this
vs. getBaseContext()
或getApplication()
vs. 之间的区别getApplicationContext()
。双方Activity
并Application
延长不是Context
本身,而是ContextWrapper
,这是一个
“代理实现
Context
它只是将所有调用委托给另一个Context
”。
这种“真实”的背景是你通过使用得到的getBaseContext()
。
因此,虽然this
(for Activity
)和getBaseContext()
两者都给出了活动背景,但它们
(a)不要引用同一个对象(
this != getBaseContext()
)和(b)呼叫上下文的
this
效率稍差,因为呼叫经过了额外的间接。不过,我怀疑它是否有任何实际意义。
同样的逻辑也适用于getApplication()
对getApplicationContext()
。

TA贡献1853条经验 获得超6个赞
LoginActivity.this
上面的行是一个活动,它是一个上下文。这是在你创建一些AlertDialogs时使用的......在某些地方它必须使用Activity Context ...
getApplication()
同样,make文本方法需要Context和Application本身实现 Context
getApplicationContext()
这是最优选的方式,因为它一直Context
存在,直到应用程序关闭。
getBaseContext()
此上下文可用于窗口小部件和视图。
但是他们所有人都提供了一个Context对象而没有别的东西。
- 3 回答
- 0 关注
- 642 浏览
添加回答
举报