Android:如何在AsyncTask中获取当前应用程序上下文?

6

我创建了一个包含多个活动的应用程序,并且有一个位于任何活动之外的AsyncTask,在应用程序启动时启动。我的问题是如何在Asynctask类中获取当前应用程序上下文?

谢谢你的回答。

2个回答

5

1
我无法在任何子类Activity中使用这个方法。 - user1364017
1
我认为使用这种方式比另一个答案建议的成员引用更安全。 - quinestor

5

将上下文作为参数传递给您的AsyncTask构造函数,并将其存储为成员变量。但要注意您传递给构造函数的上下文类型。

如果任务可能在Activity的生命周期内运行,则应传递Application上下文而不是Activity上下文。如果任务仅在Activity的生命周期内运行,则可以将Activity对象作为上下文传递。


问题在于当前的Activity将会改变,因此我的AsyncTask的参数将会出错。 - user1364017
那听起来任务的生命周期与活动的生命周期绑定在一起。因此您可以使用Activity对象作为上下文,但应该在activity的onDestroy()方法中取消任务,以便旧的Activity对象可以被垃圾回收。 - Flo
我的任务是独立的,它的生命周期与应用程序的生命周期相等。 - user1364017
好的,当您的活动调用单例时,它必须通过调用传递应用程序上下文(getApplicationContext()),以便单例可以使用它来创建具有正确上下文类型的AsyncTask。我仍然不明白您所说的“问题在于当前活动将更改,因此我的AsyncTask参数将是错误的”。这似乎与最初的问题无关。 - Flo
你应该为这个问题创建一个新的问题,这样其他人才能识别它。 - Flo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接