Android AsyncTask启动另一个AsyncTask

yyd*_*ydl 5 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*man 3

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

但即使 GC 会等到NewTask完成,也应该不是什么大问题,除非您在 中保存大量数据OlderTask或创建大量副本OlderTask

因此,如果您的设计需要这样做,那就没问题。但没有连锁任务肯定更干净。