是否可以从另一个活动或片段中停止asynctask?

时间:2017-02-13 10:21:10

标签: android android-asynctask

我想关闭或杀死在后台运行的asynctask。我正在使用导航栏。使用asynctask.cancel不起作用。我通过主活动将asynctask对象传递给导航抽屉适配器。但它不起作用。我的问题是如何阻止来自另一个活动的asynctask?或者如何在任何地方杀死asynctask?

2 个答案:

答案 0 :(得分:0)

尝试使用task.cancel(true);

AsyncTask的文档在“取消任务”中提供了一些其他详细信息。部分:

可以通过调用cancel(boolean)随时取消任务。调用此方法将导致后续调用isCancelled()返回true。调用此方法后,将在doInBackground(Object [])返回后调用onCancelled(Object)而不是onPostExecute(Object)。为确保尽快取消任务,应始终定期从doInBackground(Object [])检查isCancelled()的返回值(如果可能)(例如在循环内)。

在First_Activity中将任务定义为:静态AsyncTask loadt;

并在必要时将其称为 loadt = new LoadViewTask()。execute();

在Second_Activity中,您可以调用 First_Activity.loadt.cancel(true);

您将收到 LoadViewTask onCancelled()控件

答案 1 :(得分:0)

您应该使用RequestQueue,并在Application文件中管理队列。您可以点这个链接;

https://developer.android.com/training/volley/requestqueue.html

Cancel All Volley Requests Android