我的问题是我需要从 Navigation Drawer 的每个 List Item中打开SAME FRAGMENT,并且当片段显示时,如果 AsynTask 执行正在进行,那么AsyncTask 执行应该被取消。
我该怎么做?
我尝试了很多方法来实现这一点,但每次都失败了。
我使用了 asynctaskObject.cancel(true);
所以任何人都可以回答。我希望我能得到结果。
提前致谢。:)
我的问题是我需要从 Navigation Drawer 的每个 List Item中打开SAME FRAGMENT,并且当片段显示时,如果 AsynTask 执行正在进行,那么AsyncTask 执行应该被取消。
我该怎么做?
我尝试了很多方法来实现这一点,但每次都失败了。
我使用了 asynctaskObject.cancel(true);
所以任何人都可以回答。我希望我能得到结果。
提前致谢。:)
我找到了我的问题的解决方案。
我们只需要在 onStop 方法中发出请求,如下所示:
@Override
public void onStop() {
super.onStop();
if(asyncTaskObject!=null){
asyncTaskObject.cancel(true);
}
}
这样,每当我们从相同片段上的导航抽屉列表项请求时,片段调用 onStop() 方法,我只调用 task.cancel(true);
感谢@MysticMagic。我从您给定的链接中解决了这个问题。
为了强制cancel()
工作,您需要检查它是否在 doInBackground 中取消。
@Override
protected String doInBackground(String... params)
{
.
.
if(isCancelled()){
break;
}
.
}
参考这个:为什么Android AsyncTask在被取消后没有停止
希望能帮助到你。