【发布时间】:2016-12-09 02:51:02
【问题描述】:
我有一个后台线程,它调用 3 个异步任务来同时执行任务。调用线程充当 3 组这些任务的队列。
所以基本上我需要同时调用 3 个异步任务,一旦它们完成,我想调用队列中接下来的三个任务并重复。
但是,在三个异步任务完成之前,我无法暂停调用者线程。因此,队列中的下三个任务在前三个任务完成之前开始运行。
所以无论如何都要在异步任务完成之前保持调用者线程。我知道你可以在 asynctask 中使用 .get() 但它不会使三个 asynctasks 同时运行。
【问题讨论】:
-
也许这可以通过将侦听器传递给您的 3 asynctask 并在您的 3 asynctask 的 onPostExecute 中调用您的侦听器的方法来完成,当 3 asynctask 调用此方法时,您可以启动您的 3 next asynctask .而且我认为您应该使用服务而不是线程来启动您的异步任务。希望有所帮助。
-
我正在使用 looper 对任务进行排队,因此我找不到暂停调用下一个任务的方法。
-
如果我没记错的话,Looper 不是用来暂停的。如果我必须做类似的事情,我会通过服务获取您的任务列表(可以动态设置)并在同一时间启动 3 个任务,然后当它们完成时重新启动 startComand,而您在队列中有任务或类似的东西.
标签: android android-asynctask android-handler android-looper