我有三个异步任务,我希望能够同步运行它们。如果不将它们放在彼此的onPostExecute
中,我怎么能这样做呢?我很抱歉,如果已经涵盖了这一点,但我似乎无法在谷歌或此处获得正确的关键词。
new parseZip().execute();
new loadContent().execute();
new playContent().execute();
任何帮助将不胜感激,或只是一个线程的链接
由于
答案 0 :(得分:3)
我希望能够同步运行它们。我怎样才能做到这一点 没有把它们放在onPostExecute中吗?
为三个单独的任务创建自己的线程,并将它们同步以串行执行。见here。这张幻灯片的作者还写了一本关于Android中多线程的书。
另见Specifying the Code to Run on a Thread示例。
除此之外,默认情况下AsyncTask
是串行运行的。如果我是你,我只需将它们放在彼此的onPostExecute()
中。那有什么不对?
答案 1 :(得分:1)
您可以使用AsyncTask
查询getStatus()
的状态,以检查给定任务是否已结束,然后启动其他任务,但这意味着要不断检查wach任务的状态这不是一个好主意。
正如你所说,你也可以在彼此的onPostExecute
上开始以下任务,但是看到你的任务的名字,我认为你也是单独使用这些任务,所以这意味着某种用于控制任务是否应链接的标志。
也许更好的方法是创建一个新的AsyncTask
来执行每个巡回任务所完成的工作(可能需要一些重构来完成方法中的工作以避免重复代码)。
来自文档:
AsyncTask旨在成为Thread和Handler的辅助类 并不构成通用的线程框架。
所以,也许在你的情况下AsyncTask
不是正确的工具,你应该考虑使用普通的线程作为@ZygoteInit建议。