Android Google Task API - цепочка прерываний - PullRequest
0 голосов
/ 24 мая 2018

Я использую Firebase Auth API и Google Play-services Task API.

У меня есть этот случай с простой цепочкой задач.Я хотел бы поместить эту цепочку в случай тайм-аута: например, для плохой связи я бы остановил цепочку, если прошло 5 секунд, а цепочка не завершена.

Я знаю метод await (), но он работает на фоне и не отменяется сразу после истечения времени ожидания.

Каков наилучший способ остановить (или отменить) цепочку?Как я могу перепланировать это?

    Task<Boolean> loginTask = delay(4000)
            .continueWithTask(task -> authManager.signInWithEmailAndPasswordTask("mymail", "mypass"))
            .continueWithTask(task -> setUserMailFirebase(task.getResult().getUser().getEmail()))
            .continueWithTask(task -> delay(4000))
            .continueWithTask(task -> setUserInfoFirebase())
            .continueWithTask(task -> delay(4000));

    loginTask.addOnSuccessListener(this, booleanTask -> goToActivity(true))
            .addOnFailureListener(this, booleanTask -> goToActivity(false));

1 Ответ

0 голосов
/ 13 февраля 2019

Попробуйте этот код, но не забудьте запустить его в отдельном потоке от loginTask

try {
    Tasks.await(loginTask, 5, TimeUnit.SECONDS);
}
catch(Exception e) {
    loginTask.setException(e);
}
...