我有一个片段,我在其中执行AsyncTask
来从Web服务获取json响应。
我想取消片段的AsyncTask
,为asynctask调用cancel
函数,但它不起作用:
@Override
public void onDetach() {
// TODO Auto-generated method stub
super.onDetach();
if(wsClient != null && wsClient.getStatus() == Status.RUNNING && !wsClient.isCancelled())
wsClient.cancel(true);
}
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(wsClient != null && wsClient.getStatus() == Status.RUNNING && !wsClient.isCancelled())
wsClient.cancel(true);
}
答案 0 :(得分:0)
你应该自己检查isCancelled()。调用cancel()不会中断你的asyncTask。
可以通过调用cancel(boolean)随时取消任务。 调用此方法将导致后续调用isCancelled() 返回true。在调用此方法之后,改为onCancelled(Object) 之后将调用onPostExecute(Object) doInBackground(Object [])返回。确保取消任务 你应该尽快检查返回值 如果可能的话,定期从doInBackground(Object [])获取isCancelled() (例如在循环内部。)
请参阅http://developer.android.com/reference/android/os/AsyncTask.html
答案 1 :(得分:0)
尝试在onPause方法中运行cancel()函数。祝你好运。