2

我的问题是我需要从 Navigation Drawer 的每个 List Item中打开SAME FRAGMENT,并且当片段显示时,如果 AsynTask 执行正在进行,那么AsyncTask 执行应该被取消。

我该怎么做?

我尝试了很多方法来实现这一点,但每次都失败了。

我使用了 asynctaskObject.cancel(true);

所以任何人都可以回答。我希望我能得到结果。

提前致谢。:)

4

2 回答 2

3

我找到了我的问题的解决方案。

我们只需要在 onStop 方法中发出请求,如下所示:

@Override
public void onStop() {
    super.onStop();
    if(asyncTaskObject!=null){
        asyncTaskObject.cancel(true);
    }
}    

这样,每当我们从相同片段上的导航抽屉列表项请求时,片段调用 onStop() 方法,我只调用 task.cancel(true);

感谢@MysticMagic。我从您给定的链接中解决了这个问题。

于 2014-11-14T07:14:49.887 回答
0

为了强制cancel()工作,您需要检查它是否在 doInBackground 中取消。

@Override
protected String doInBackground(String... params) 
{
    . 
    .
    if(isCancelled()){
        break;
    }
    .
}

参考这个:为什么Android AsyncTask在被取消后没有停止

希望能帮助到你。

于 2014-11-14T05:37:09.897 回答