是否有必要取消异步任务?

时间:2013-09-12 15:31:35

标签: android android-asynctask lifecycle

所以我已经交了一个Android应用程序,我注意到在Fragment的onStop生命周期方法中他们做了以下事情:

    if(mWorkerTask!=null)
    {       
        AsyncTask.Status taskStatus=mWorkerTask.getStatus();

        if(taskStatus==Status.RUNNING||taskStatus==Status.PENDING)
        {
            mWorkerTask.cancel(true);
        }
    }

我仍然不明白为什么他们这样做,是否需要在onStop方法中取消AsyncTask?

2 个答案:

答案 0 :(得分:2)

不一定是it is a good practice to stop using any resources allocated to your app,但它在前台或为用户做一些有用的事情,例如从互联网下载/上传一些数据,after it's purpose is finished.

不再需要时same as closing a file or database。即使您从onStop()中删除了上述代码,它也不会影响您的应用(如果某些其他进程未使用它),但取消asynctask将save memory and cpu cycles eventually battery

希望这有帮助。

答案 1 :(得分:0)

不仅如此。 AsyncTask导致一些不规范的职责,例如,如果任何活动被破坏或者生命周期超过了asynctask,这可能仍然在后台线程中工作。为此目的,API开发人员已经引入了Volly框架。 你可以在这里找到更多细节 http://bon-app-etit.blogspot.in/2013/04/the-dark-side-of-asynctask.html