如何在没有 post 执行链接的情况下 运行 同步异步任务?

How do I run Async tasks synchronously without post execute chaining?

我有三个异步任务,我希望能够同步 运行 它们。如果不将它们放在彼此的 onPostExecute 中,我该怎么做呢?很抱歉,如果这已被涵盖,但我似乎无法在 google 或此处找到正确的关键词。

new parseZip().execute();
new loadContent().execute();
new playContent().execute();

如有任何帮助,我们将不胜感激,或者只是 link 一个线程

谢谢

i'd like to be able to run them synchronously. How can I do that without putting them in onPostExecute of eachother?

为三个独立的任务创建您自己的线程并同步它们以串行执行。参见 here。这张幻灯片的作者还在 Android.

中写了一本关于多线程的书

另请参阅 Specifying the Code to Run on a Thread 示例。

顺便说一句,默认情况下 AsyncTask 是 运行 连续的。如果我是你,我会简单地将它们放在彼此的 onPostExecute() 中。这有什么问题吗?

您可以使用 getStatus() 查询 AsyncTask 的状态,以检查给定任务是否已结束,然后开始另一个任务,但这意味着要不断检查的状态wach 任务,这不是一个好主意。

你也可以像你说的那样,在彼此的onPostExecute上开始下面的任务,但是看你的任务名称我觉得你也是单独使用的任务,所以这意味着某种标志来控制是否应该链接任务。

也许更好的方法是创建一个新的 AsyncTask 来执行每个游览任务完成的所有工作(可能需要一些重构来完成方法中的工作以避免重复代码)。

来自文档:

AsyncTask is designed to be a helper class around Thread and Handler and does not constitute a generic threading framework.

所以,也许在你的情况下 AsyncTask 不是完成这项工作的正确工具,你应该考虑使用@ZygoteInit 建议的普通线程。