我知道 AsyncTask 不是长流程的首选。他们的主要目标是减轻UI 线程 的负担并在后台 执行操作。稍后完成更新相应的 UI 线程。
我知道内存泄漏,即在 doInBackground 完成后需要更新 UI 时, Activity 可能会被破坏。
我的问题是我可以像使用简单的 Thread 一样使用 AsyncTask 吗?
如果启动它的 Activity 或 Application 终止,AsyncTask 会发生什么情况?
要求
我不需要更新任何 UI。
我不希望我的任务与 Activity (启动它)相关联。
最佳答案
第一个问题:
是的,你可以。这完全取决于你的逻辑。
第二个问题:
尽管应用程序被用户或系统终止,线程仍将处于后台。
要解决第二种情况,请使用以下技术
只需确保在应用程序或 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();
}
关于android - 用于较长进程的 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15903180/