gpt4 book ai didi

java - 如何协调两个后台任务?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:42:34 26 4
gpt4 key购买 nike

我有 2 个 AsyncTasks 在 fragment 中运行。
AsyncTasks 在不同的类中定义,而不是 fragment 的内部私有(private)类。
我遇到的问题是现在我需要让 AsyncTaskX 等到 AsyncTaskY 完成它的 onPostExecute
我该如何解决这个问题?
我正在考虑使用倒计时锁存器,但 AsyncTaskY 在不同的类中,我不确定编写此代码的最佳方法是什么?
有没有办法检查 AsyncTask 是否已完全完成?

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

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

最佳答案

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

在任何类中创建一个静态 boolean 值

static boolean onPostExecuteFinished;

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

ClassName.onPostExecuteFinished = true;

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

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);

关于java - 如何协调两个后台任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com