0

因此,我收到了一个 Android 应用程序,我注意到在 Fragment 的 onStop 生命周期方法中,他们执行了以下操作:

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

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

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

4

2 回答 2

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

希望这可以帮助。

于 2013-09-12T15:52:36.093 回答
0

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

于 2014-04-10T16:39:05.697 回答