我知道AsyncTask对于长时间的处理不是首选。他们的主要目标是减轻UI线程的负担,并在后台进行操作。稍后完成时,更新相应的UI线程。
我知道内存泄漏,即在doInBackground完成后需要更新UI时,并且活动被破坏的可能性。
我的问题是我可以像简单的Thread一样使用AsyncTask吗?
如果Activity或Application死亡,那么AsyncTask会如何处理?
要求
我不需要更新任何UI。
我不希望我的任务与Activity(启动它)相关联。
最佳答案
第一个问题:
是的,您可以。这完全取决于您的逻辑。
第二个问题:
尽管应用程序被用户或系统杀死,但该线程将在后台运行。
若要解决第二种情况,请使用以下技术
只需确保在应用程序或活动关闭之前完成AsyncTask
AsyncTask yourAsyncTask
@Override
public void onDestroy(){
//you may call the cancel() method but if it is not handled in doInBackground() method
if(yourAsyncTask!=null)
if (yourAsyncTask != null && yourAsyncTask.getStatus() != AsyncTask.Status.FINISHED)
yourAsyncTask.cancel(true);
super.onDestroy();
}