我目前正在 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?使用这种方法还有其他可能的问题吗?
如果这是一个问题,我该如何纠正它?
最佳答案
除非NewTask
是 OlderTask
中的内部非静态类它不会阻止 GC 收集 OlderTask
除非您以其他方式存储对它的引用。
但是即使GC也会等到NewTask
完成这应该没什么大不了的,除非你在 OlderTask
中保存了大量数据。或创建大量 OlderTask
的副本.
因此,如果您的设计需要这样做,那也没关系。但是没有链式任务肯定更干净。
关于Android AsyncTask 启动另一个 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400810/