Ich habe eine Methode, in der ich eine andere Methode aufrufen, die einen Rückruf hat. Ich möchte diesen Rückruf erhalten, bevor ich meine Methode verlasse. Ich sah einige andere Beiträge, in denen Latches verwendet werden. Mein Code sieht so aus:So warten auf Callback vor dem Verlassen der Methode (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();
}
}
Dies funktioniert nicht, die Methode bleibt in der Funktion await() hängen. Was passiert, ist, dass die Methode sofort in die awarn() -Methode springt und nicht erneut in die onRequestSuccess() - oder onRequestFailure() -Methode geht. Ich denke, das ist ein Problem mit der Problematik ... Irgendwelche Ideen, wie man dieses Problem beheben kann?
EDIT: Hinzugefügt die Codezeile, wo ich das Latch erstellen.
Korrigieren Sie mich, wenn ich falsch liege, aber wird in diesem Fall meine Funktion nicht in der await() hängen bleiben? (wie wir es vor dem Countdown nennen) –