Как правильно создать SettableFuture, не блокируя основной поток? - PullRequest
0 голосов
/ 28 июня 2019

Я использую Microsoft Graph API 1.0. Метод login () использует обратный вызов для оповещения, когда вход в систему завершился успешно или не удалось.

Мне нужно подождать, пока не сработает обратный вызов, прежде чем продолжить . Для этого я пытаюсь использовать SettableFuture, но он блокирует основной поток, который мне кажется, и обратный вызов никогда не срабатывает (но происходит, если я не использую SettableFuture).

public SettableFuture<Boolean> login(){
final SettableFuture<Boolean> result = SettableFuture.create();
authenticationAdapter.login(activity, new ICallback<Void>() {
    @Override
    public void success(final Void aVoid) {
        //Some stuff;
        result.set(true);
    }

    @Override
    public void failure(final ClientException ex) {
        //Some stuff
        result.setException(ex);
    }
});

return result;
}

Как исправить этот код, чтобы обратный вызов включался в действие, указанное в аргументе, но блокировался с помощью SettableFuture (мне нужно создать конкретное действие для прослушивания обратного вызова)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...