我只是困惑,不知道该怎么办。我想执行一个AsyncTask,当我按下后退按钮,主页按钮或任何使活动暂停时取消它。
我已添加isCancelled()。我从Activity的onPause()调用cancel()。我从onCreate实例化并执行我的Asynctask。
有趣的是,isCancelled()永远不会是真的。总是假的。
下面是我的AsyncTack,我错过了什么吗?
private class Check extends AsyncTask<String, Integer, StatusToReturn> {
Reservasi r;
private boolean forceCancel = false;
public Check(Reservasi r) {
this.r = r;
}
public synchronized boolean isForceCancel() {
return forceCancel;
}
public synchronized void setForceCancel(boolean forceCancel) {
this.forceCancel = forceCancel;
}
@Override
protected void onPostExecute(StatusToReturn result) {
//blablabla...
}
@Override
protected StatusToReturn doInBackground(String... arg0) {
StatusToReturn sssss;
StatusToReturn ddddd;
while (true) {
if (isCancelled() || isForceCancel()) {
sssss = new StatusToReturn("Waw");
break;
}
/*SOME LITTLE NETWORKS THING HERE*/
//Yes, i want a sleep.
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return sssss;
}
}
哦,我添加了“forceCancel”,拼命试图通过从onPause()获取它来取消它。当我调试它时,它的值总是假的。
我正在使用Acer Z120,Android 4.1.1进行测试和调试,如果有人想知道的话。
谢谢。
答案 0 :(得分:0)
编写此代码段
@Override
public void onStop() {
super.onStop();
if(CLASSOBJECT!= null && CLASSOBJECT.getStatus() == Status.RUNNING) {
CLASSOBJECT.cancel(true);
}
}