Конвертировать слушатели в 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
Метод деятельности.