Android 如何仅在多个网络调用全部完成后触发事件

Android 如何仅在多个网络调用全部完成后触发事件,android,future,Android,Future,我继承了遗留代码。我面临的问题是,在Android中,splashscreen上异步发生了多个网络调用(但根据我的问题,可以是任何系统)。所有通话结束后,我需要加载另一个屏幕(android中的活动)。现在发生的事情是,无法知道哪个调用首先完成,而且有很多布尔值等被用来跟踪所有作业何时完成。我需要你推荐一种模式或工具,我只能在所有作业完成后进入下一个屏幕。团队没有时间学习RxJava。在RxJava之前是如何做到这一点的 因此,我现在有3个网络调用同时启动,但是是异步的,我只想在它们全部完成后才

我继承了遗留代码。我面临的问题是,在Android中,splashscreen上异步发生了多个网络调用(但根据我的问题,可以是任何系统)。所有通话结束后,我需要加载另一个屏幕(android中的活动)。现在发生的事情是,无法知道哪个调用首先完成,而且有很多布尔值等被用来跟踪所有作业何时完成。我需要你推荐一种模式或工具,我只能在所有作业完成后进入下一个屏幕。团队没有时间学习RxJava。在RxJava之前是如何做到这一点的

因此,我现在有3个网络调用同时启动,但是是异步的,我只想在它们全部完成后才向前移动到下一个窗口。记住,它们都在同一时间启动,但可以在不同的时间完成,因为它们是异步的

我需要类似于的东西,但我认为Java没有。我可以用一台电脑来做这个吗?怎么做

更新:问题是我在一个android活动中做这个异步工作。活动在主线程上面向用户

对于那些建议倒计时的人,我有一个反对的想法。在android中,开发人员无法让主线程阻塞。将出现ANR错误。假设我创建两个网络调用线程,然后调用
\u latch.await()来自主线程。现在android将等待这两个调用完成后再继续。android中的主线程长时间不允许阻塞

签出倒计时闩锁

其思想是创建一个实例倒计时锁存器(5);指定一个数字。 然后调用wait()方法,该方法将一直阻止,直到调用了5次countDown()。

checkout CountDownLatch

其思想是创建一个实例倒计时锁存器(5);指定一个数字。
然后调用wait()方法,该方法将一直阻止,直到倒数()被调用5次。

如果您知道开始时要发起的调用总数,那么@Karlo建议的倒数锁存器应该可以工作

但是,如果可以在其他调用已经运行时创建新调用,那么请尝试使用信号量

基本上,创建信号量的“n”池,在开始调用时调用acquire(),在结束调用时调用release()


发布后,检查availablePermits()。如果结果为“n”,则表示所有调用都已结束

如果您知道开始时要发起的呼叫总数,那么@Karlo推荐的倒计时锁应该可以工作

但是,如果可以在其他调用已经运行时创建新调用,那么请尝试使用信号量

基本上,创建信号量的“n”池,在开始调用时调用acquire(),在结束调用时调用release()


发布后,检查availablePermits()。如果结果为“n”,则表示所有调用都已结束

你为什么不想使用信号灯或倒计时闩锁?你为什么不想使用信号灯或倒计时闩锁?