Android AsyncTask 启动另一个 AsyncTask

标签 android garbage-collection android-asynctask

我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作,其中 NewTask 不是当前正在执行的任务:

private class OlderTask extends AsyncTask<String, Void, Integer> {
    //other functions (not important)

    @Override
    protected void onPostExecute(Integer result) {
        new NewTask().execute(null, null);
    }
}

我想知道这是否是个坏主意。这样做会不会导致OlderTask的GC等待NewTask?使用这种方法还有其他可能的问题吗?

如果这是一个问题,我该如何纠正它?

最佳答案

除非NewTaskOlderTask 中的内部非静态类它不会阻止 GC 收集 OlderTask除非您以其他方式存储对它的引用。

但是即使GC也会等到NewTask完成这应该没什么大不了的,除非你在 OlderTask 中保存了大量数据。或创建大量 OlderTask 的副本.

因此,如果您的设计需要这样做,那也没关系。但是没有链式任务肯定更干净。

关于Android AsyncTask 启动另一个 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400810/

相关文章:

android - 以编程方式查找 Android .apk 文件的来源?

安卓自定义对话框

android - GridView 在一行中绘制其元素

c# - 使用 using 处理嵌套对象

c# - GC.Collect() 和完成

android - android中如何决定是否使用ASyncTask?

java - Android App判断是否有连接

具有数据结构(字典、列表等)的 C# .NET 内存管理

java - 更新 APIGEE 实体时出错

Android AsyncTask 和 Mockito(或 PowreMockito)