レガシーコードから継承しました。私が直面している問題は、複数のネットワークコールがAndroidで非同期的にスプラッシュスクリーンで発生していることです(しかし、私の質問ごとに任意のシステムになる可能性があります)。すべての呼び出しが終了したら、別の画面(Androidのアクティビティ)を読み込む必要があります。今、何が起こっているかは、どのコールが最初に終了したかを知る方法がなく、すべてのジョブがいつ終了したかを追跡するためにブーリアンなどがたくさんあります。すべてのジョブが完了したら次の画面に進むために使うことができるパターンやツールについて、あなたのお勧めが必要です。チームはRxJavaを学ぶ時間がありません。これはRxJavaの前にどのようにして行われましたか?複数のネットワークコールがすべて完了した後でイベントをトリガーする方法
私は現在、3つのネットワークコールが同時に開始されていますが、非同期で開始されていることを明確にしています。すべて完了したときにのみ、次のウィンドウに移動します。覚えておいてください、それらはすべて同時に開始しますが、非同期であるため、異なる時間に完了することができます。
私はpromiseのようなものが必要ですが、Javaにはそのようなものはありません。これを行うにはfutureを使用できますか?どうやって?
更新:問題は、この非同期作業を行うアンドロイドの活動にあります。アクティビティは、メインスレッド上でユーザが直面している。
カウントダウンを提案する人には、私はそれに対して考えを持っています。アンドロイドでは、開発者はメインスレッドをブロックする位置にいません。 ANRエラーが表示されます。 2つのネットワークコールスレッドを作成し、メインスレッドから_latch.await();
を呼び出してみましょう。アンドロイドは2つの呼び出しが完了するのを待ってから処理を進めます。アンドロイドでのメインスレッドのブロックは、長い間許可されていません。
セマフォまたはカウントダウンラッチを使用しない理由は何ですか? https://developer.android.com/reference/java/util/concurrent/package-summary.html –