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

我是新来的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);


手掌心
浏览 637回答 3
3回答

森林海

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

墨色风雨

LoginActivity.this上面的行是一个活动,它是一个上下文。这是在你创建一些AlertDialogs时使用的......在某些地方它必须使用Activity Context ...getApplication()同样,make文本方法需要Context和Application本身实现 ContextgetApplicationContext()这是最优选的方式,因为它一直Context存在,直到应用程序关闭。getBaseContext()此上下文可用于窗口小部件和视图。但是他们所有人都提供了一个Context对象而没有别的东西。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android