問題タブ [android-task]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Firebase タスク whenAll が期待どおりに機能せず、OnCompleteListener をスキップする
これは私のプログラムの流れです:
このセッションで、ユーザーがビデオをストリーミングしたり、添付ファイルをダウンロードしたり、複数選択形式で質問に答えたりできる学習セッションを作成できます。
そのため、1 つのセッションにビデオやファイル、質問を含めることができます。
セッションを作成する過程で、セッションをデータベースに保存する前に、ビデオやファイルのすべてのアップロード タスクを完了し、そのセッションの質問を保存するすべてのデータベース タスクを完了する必要があります。この場合、私はこのようなものを使用します。最終タスク
Tasks.whenAll(listTask)
に追加onCompleteListener
し、最終的にセッションをデータベースに保存します。UploadTask
ほとんどすべてが期待どおりに機能し、質問が保存され、ビデオがアップロードされましたが、ビデオのアップロードから返された に問題があります。私のSession
クラスにvideoUrl
は、ビデオの URL を含むフィールドがあります。ビデオの URL を取得するにはonCompleteListener
、 myUploadTask
に追加し、タスクの結果から URL を取得して、その URL をクラス インスタンスに保存する必要があります。onCompleteListener
ただし、最終タスクの が最初に呼び出されるため、ビデオ URL はデータベースに保存されません。
私の質問は、listTask のすべてのタスクが完了し、onCompleteListener も完了したときに Tasks.whenAll(listTask) を実行する方法です。
java - タスクの void onComplete() の結果にアクセスする方法
私は奇妙に設計されたライブラリを使用しています。このコードには基本的にTask
オブジェクトonComplete()
とonfail()
メソッドがあり、これらのメソッドは両方とも無効であるため、それらの内部で return を使用できません。
タスク内で更新された外部変数を使用 しようとonComplete()
しましたonfail()
タスクの完了を待ってから値を返すつもりですが、
私が何かを試してみると
メソッドに完了を強制的に待機させる
アプリが完全にフリーズする
タスクの完了時に値を正しく取得するにはどうすればよいですか?