我是新来的Android和我想明白之间的差别getApplication(),getApplicationContext()getBaseContext(),getContext()以及someClass.this特别是当使用这些方法在下面的代码行:当我发起祝酒时,这些和我使用它们之间有什么区别?Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show();Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show();Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show();Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show();与意图相同:Intent intent = new Intent(getApplicationContext(), LoginActivity.class);Intent intent = new Intent(MenuPagina., LoginActivity.class);Intent intent = new Intent(getBaseContext(), LoginActivity.class);Intent intent = new Intent(getApplication(), LoginActivity.class);
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 关注
- 636 浏览
添加回答
举报
0/150
提交
取消