android - 用于较长进程的 AsyncTask

标签 android android-asynctask

我知道 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/

相关文章:

android - 从 google map api v2 中删除默认对象

android - getNeighboringCellInfo() 返回空列表

android - android系统如何自动连接到配对设备?

android - android下载代码下载不完整的文件

android - JAVA - 在 android 中通过 GCM 发送类

android - AsyncTask,它必须承受这样的性能损失吗……?

java - 为什么在 android 中提取 Json 会出现异常?

java - android 异步启动屏幕不显示内容 View

android - 在 Android 中的 UI 线程操作期间显示 ProgressDialog

java - 将数据设置为全局变量