【发布时间】:2020-06-22 22:44:52
【问题描述】:
假设我有一个像下面这样的课程;
class X {
private List<String> listing;
class XAsync extends AsyncTask... {
<normal async task class>
doInBackground {
listing = <populating from a web service>
}
}
public redirectList() {
while(listing.size == 0) {
continue;
}
redirect(listing);
}
}
如何确保通过异步任务成功填充重定向方法中发送的列表参数?确保列表中填充了 while 子句是否是最佳实践?
谢谢
【问题讨论】:
-
你为什么认为你可能需要
while循环?也就是说,你为什么不能在doInBackground()的末尾或onPostExecute()中调用redirect(listing);? -
@MikeM.you 是对的,我只是问在 cpu ram 等方面哪个是一个好习惯。
-
嗯,一般来说,像这样的循环通常是不必要的,尤其是在事件驱动的编程中,在我们所处的级别。在这种特殊情况下,如果您可以在完成后执行“重定向”,则无需在下载期间让该循环不断旋转。这基本上只是在浪费资源。
-
@MikeM。如果我必须在那里使用线程而不是异步任务怎么办。这仍然不是一个好习惯吗?
-
同样的事情,差不多。
AsyncTask基本上只是Thread的“包装”。如果您想直接自己处理单独的Thread,同样的想法也适用;在Thread的工作完成后执行下一步。无需另一个Thread持续监控它。
标签: android multithreading asynchronous android-asynctask thread-safety