1
コールバックを持つ別のメソッドを呼び出す方法があります。私はこのメソッドを離れる前にこのコールバックを受け取りたい。私はラッチが使われているいくつかの他のポストを見た。私のコードは次のようになります:メソッドを終了する前にコールバックを待つ方法(Java)
public void requestSecurityToken(<some params>){
final CountDownLatch latch = new CountDownLatch(1);
MyFunction.execute(<someParams>, new RequestListener<Login>() {
@Override
public void onRequestFailure(SpiceException spiceException) {
//TODO
}
@Override
public void onRequestSuccess(Login login) {
//handle some other stuff
latch.countDown();
}
});
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
これは動作しません。メソッドはawait()関数でスタックされています。何が起こるかは、メソッドがすぐにawait()にジャンプし、再度onRequestSuccess()メソッドまたはonRequestFailure()メソッドに入ることはありません。私はこれがconcurencyの問題だと思う...この問題を解決する方法に関するアイデア?
EDIT:ラッチを作成するコード行を追加しました。
私が間違っている場合は私を修正しますが、この場合、私の機能はawait()にも拘束されませんか? (カウントダウンの前に呼び出すように) –