如何协调两个后台任务?

Jim*_*Jim 5 java multithreading android android-asynctask android-fragments

我在片段中运行了2个AsyncTasks.
AsyncTasks在不同的类中定义,而不是片段的内部私有类.
我遇到的问题是,现在我需要让AsyncTaskX等到AsyncTaskY完成它onPostExecute
我怎么能解决这个问题?
我在考虑使用倒计时,但AsyncTaskY是在另一个类中,我不确定这是什么最好的编码方式?
有没有办法检查AsyncTask是否完全完成?

更新:
我想知道是在task.execute().get()回来之后onPostExecute

更新2:从UI线程
调用是否CountDownLatch.countDown()安全?

fse*_*bek 1

如果不看你的代码,真的很难确定这一点吗?一种肮脏的解决方案是添加一个静态布尔值,然后添加一个递归计时器。这不是最好的编程技术,但从我读到的内容来看,它肯定会起作用。

在任何类中创建静态布尔值

static boolean onPostExecuteFinished;
Run Code Online (Sandbox Code Playgroud)

在需要先完成的AsyncTask中将其设置为true

ClassName.onPostExecuteFinished = true;
Run Code Online (Sandbox Code Playgroud)

在需要等待的类中,您创建一个递归方法等待它完成。我建议使用处理程序。

public void nameOfRecursiveMethodHere()
Handler handler = new Handler()

handler.postDelated(new runnable........{
if (ClassName.onPostExecuteFinished) {
//Great it is finished do what you need
} else {
//Not finished call this method again
nameOfRecursiveMethodHere();
}

}),(put how often you want it to check in milliseconds here);
Run Code Online (Sandbox Code Playgroud)