Android Google Task API - 中断链

时间:2018-05-24 16:59:02

标签: android firebase functional-programming task

我正在使用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 :(得分:0)

尝试此代码,但请记住在与loginTask分开的单独线程上运行它

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