Конвертировать слушатели в Future API

Следующий код использует 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 Метод деятельности.

0 ответов

Другие вопросы по тегам