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()安全?
如果不看你的代码,真的很难确定这一点吗?一种肮脏的解决方案是添加一个静态布尔值,然后添加一个递归计时器。这不是最好的编程技术,但从我读到的内容来看,它肯定会起作用。
在任何类中创建静态布尔值
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)