为了账号安全,请及时绑定邮箱和手机立即绑定

差异以及何时使用getApplication(),getApplicationContext()

差异以及何时使用getApplication(),getApplicationContext()

手掌心 2019-08-30 14:31:29
我是新来的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的答案非常明确和完整,但我想进一步澄清使用thisvs. getBaseContext()getApplication()vs. 之间的区别getApplicationContext()。双方ActivityApplication延长不是Context本身,而是ContextWrapper,这是一个

“代理实现Context它只是将所有调用委托给另一个Context”。

这种“真实”的背景是你通过使用得到的getBaseContext()

因此,虽然this(for Activity)和getBaseContext()两者都给出了活动背景,但它们

  • (a)不要引用同一个对象(this != getBaseContext())和

  • (b)呼叫上下文的this效率稍差,因为呼叫经过了额外的间接。不过,我怀疑它是否有任何实际意义。

同样的逻辑也适用于getApplication()getApplicationContext()


查看完整回答
反对 回复 2019-08-30
?
墨色风雨

TA贡献1853条经验 获得超6个赞

LoginActivity.this

上面的行是一个活动,它是一个上下文。这是在你创建一些AlertDialogs时使用的......在某些地方它必须使用Activity Context ...

getApplication()

同样,make文本方法需要Context和Application本身实现 Context

getApplicationContext()

这是最优选的方式,因为它一直Context存在,直到应用程序关闭。

getBaseContext()

此上下文可用于窗口小部件和视图。

但是他们所有人都提供了一个Context对象而没有别的东西。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 636 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信