猿问

活动上下文与应用程序上下文的区别

活动上下文与应用程序上下文的区别

这让我很困惑,我在Android2.1-R8SDK中使用了这个:

ProgressDialog.show(getApplicationContext(), ....);

也在

Toast t = Toast.makeText(getApplicationContext(),....);

使用getApplicationContext()双双崩溃ProgressDialogToast..这让我想到了这个问题:

活动上下文和应用程序上下文之间的实际区别是什么,尽管使用了“上下文”的措辞?


慕容708150
浏览 587回答 3
3回答

MMMHUHU

它们都是语境,但应用程序实例与应用程序的生命周期相关联,而活动实例与活动的生命周期相关联。因此,他们可以访问有关应用程序环境的不同信息。如果你在getApplicationContext它指出,只有当您需要一个生命周期与当前上下文分离的上下文时,才应该使用它。这在你的两个例子中都不适用。活动上下文可能包含一些有关当前活动的信息,这些信息是完成这些调用所必需的。如果您显示了确切的错误消息,可能会指出它到底需要什么。但是通常,除非您有充分的理由不使用活动上下文,否则请使用活动上下文。

哆啦的时光机

我发现这个表对于决定何时使用不同类型的上下文非常有用:应用程序可以从这里启动一个活动,但它需要创建一个新任务。这可能适合特定的用例,但可以在应用程序中创建非标准的回堆栈行为,通常不推荐或认为是良好实践。这是合法的,但通货膨胀将与您正在运行的系统的默认主题,而不是在您的应用程序中定义的主题一起完成。如果接收方为NULL,则允许在Android4.2及更高版本上获取粘性广播的当前值。原创文章这里.

慕森卡

这显然是API设计的不足。首先,活动上下文和应用程序上下文是完全不同的对象,因此使用上下文的方法参数应该使用ApplicationContext或Activity直接,而不是使用父类上下文。第二,文档应该指定使用或不显式使用哪个上下文。
随时随地看视频慕课网APP

相关分类

Android
我要回答