我正在使用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));
答案 0 :(得分:0)
尝试此代码,但请记住在与loginTask分开的单独线程上运行它
try {
Tasks.await(loginTask, 5, TimeUnit.SECONDS);
}
catch(Exception e) {
loginTask.setException(e);
}