Android AsyncTask 启动另一个 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 吗?使用这种方法还有其他可能的问题吗?
如果这是一个问题,我该如何纠正?
I'm currently doing something like this in the AsyncTask's onPostExecute method, where NewTask
is not the current task that's executing:
private class OlderTask extends AsyncTask<String, Void, Integer> {
//other functions (not important)
@Override
protected void onPostExecute(Integer result) {
new NewTask().execute(null, null);
}
}
I'm wondering if this is a bad idea. Will doing so cause GC for the OlderTask to wait for the NewTask? Are there any other possible problems with using such an approach?
And if this is a problem, how can I rectify it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除非
NewTask
是OlderTask
中的内部非静态类,否则它不会阻止 GC 收集OlderTask
,除非您以其他方式存储对它的引用。但即使 GC 会等到 NewTask 完成,也不会有什么大问题,除非您在 OlderTask 中保存大量数据或创建 OlderTask 的大量副本。 /代码>。
因此,如果您的设计需要这样做,那就没问题。但没有连锁任务肯定更干净。
Unless
NewTask
is inner non static class inOlderTask
it will not prevent GC from collectingOlderTask
unless you store reference to it in some other way.But even if GC will wait until
NewTask
is done it should not be a big deal unless you save lot of data inOlderTask
or create lots of copies ofOlderTask
.So if your design requires doing that, it's ok. But it surely cleaner not to have chained tasks.
我使用回调方法,所以当结果到达 onPostExecute 时,我从 UI 调用另一个 AsynkTask,我认为这是个好主意,让我知道你的想法。
I use a callback method, So when result comes to onPostExecute I call another AsynkTask from UI, I think it is good idea, Let me know what do you think.