我知道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();
    }

09-26 20:10