Конвертировать слушатели в Future API - PullRequest
0 голосов
/ 05 декабря 2018

Следующий код использует SettableFuture для преобразования API прослушивателя Firebase в будущее:

private SettableFuture<InstanceIdResult> getId(@NonNull Activity activity) {
    future = SettableFuture.create();

    FirebaseInstanceId
            .getInstance()
            .getInstanceId()
            .addOnSuccessListener(activity, new OnSuccessListener<InstanceIdResult>() {
                @Override
                public void onSuccess(InstanceIdResult instanceIdResult) {
                    future.set(instanceIdResult)
                }
            })
            .addOnFailureListener(activity, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {

                    future.setException(e);
                }
            });
}

Чтобы получить идентификатор, который я просто использую:

getIdAsync(activity).get();

Работает нормально, но если я вызываю его из обработчика событий BroadcastReceiver, он вешает интерфейс.

Он зависает, даже если я вызываю его из потока пользовательского интерфейса, используя runOnUiThread метод Activity.

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