AsyncTask.cancel()不起作用

时间:2013-12-29 14:03:28

标签: android android-asynctask

我只是困惑,不知道该怎么办。我想执行一个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进行测试和调试,如果有人想知道的话。

谢谢。

1 个答案:

答案 0 :(得分:0)

编写此代码段

@Override
    public void onStop() {
        super.onStop();
        if(CLASSOBJECT!= null && CLASSOBJECT.getStatus() == Status.RUNNING) {
            CLASSOBJECT.cancel(true);
        }
    }