所以我已经交了一个Android应用程序,我注意到在Fragment的onStop生命周期方法中他们做了以下事情:
if(mWorkerTask!=null)
{
AsyncTask.Status taskStatus=mWorkerTask.getStatus();
if(taskStatus==Status.RUNNING||taskStatus==Status.PENDING)
{
mWorkerTask.cancel(true);
}
}
我仍然不明白为什么他们这样做,是否需要在onStop方法中取消AsyncTask?
答案 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