开发者

How to cancel AsyncTask when Activity finishes?

开发者 https://www.devze.com 2022-12-25 09:35 出处:网络
In my Activity I use multiple AsyncTask classes. How to can开发者_运维知识库cel AsyncTask when Activity finishes?i think the best place to do this is onStop

In my Activity I use multiple AsyncTask classes.

How to can开发者_运维知识库cel AsyncTask when Activity finishes?


i think the best place to do this is onStop

protected void onStop() {
    super.onStop();

    /*
    * The device may have been rotated and the activity is going to be destroyed
    * you always should be prepared to cancel your AsnycTasks before the Activity
    * which created them is going to be destroyed.
    * And dont rely on mayInteruptIfRunning
    */
    if (this.loaderTask != null) {
        this.loaderTask.cancel(false);
    }
}

in my Task i then check as often as possible if cancel was called

protected String doInBackground(String... arg0) {
    if (this.isCancelled()) {
        return null;
    }
}

and of course dont forget to drop data that maybe returned since there's no more Activity to receive it

protected void onPostExecute(List<UserStatus> result) {
    if(!this.isCancelled()) {
        //pass data to receiver
    }
}


I don't understand if your "cancel" means rollback but you have a cancel method on the AsyncTask class.


The asynctask thread is kept alive in a thread pool for future istances of AsyncTask. You can't remove them.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号