android - Tasks.whenAllSuccess 是否保证我将任务传递给它的顺序?

标签 android firebase google-cloud-firestore

我在 Android 应用中使用 Cloud Firestore。

我创建了 2 个查询,一个 whereLessThan 和一个 whereGreaterThan 来有效地创建一个 != 查询。 我为每个单独的查询排序结果,但是当我单独运行它们时,我可能会首先返回一个或另一个,具体取决于哪个更快。

当我将 2 个查询合并为 1 个查询,然后使用 Tasks.whenAllSuccess 方法获取 1 个 Task 并向其添加 1 个 OnSuccessListener 时,它会保持我通过任务的结果顺序吗?

public void loadNotes(View v) {
    Task task1 = notebookRef
            .whereLessThan("priority", 2)
            .orderBy("priority")
            .get();

    Task task2 = notebookRef
            .whereGreaterThan("priority", 2)
            .orderBy("priority")
            .get();

    Task finalTask = Tasks.whenAllSuccess(task1, task2).addOnSuccessListener(new OnSuccessListener<List<Object>>() {
        @Override
        public void onSuccess(List<Object> objects) {
            //will my results be ordered prioty 1 - 3 - 4 - 5....?
        }
    });
}

最佳答案

Tasks.whenAllSuccess(和其他whenAll方法)将按照传递给whenAllSuccess的顺序将任务结果传递到列表中的回调。如果您需要其他方式获取结果,您可以使用原始 Task 对象维护一些数据结构,然后根据需要查询它们。

关于android - Tasks.whenAllSuccess 是否保证我将任务传递给它的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50123649/

相关文章:

javascript - Cloud Firestore 读/写错误 : The 'Access-Control-Allow-Origin' header has a value 'null'

php - 带有 Firebase 托管的简单 PHP 联系表单

ios - 如何禁用 Firebase 实时数据库 iOS 离线写入

go - 如何使用 Go 连接到非默认 firestore 数据库?

swift - 时间戳作为 "timestamp"保存到 Firestore 中是否正常?

android - 新的 'Cloud Firestore' 是否可以查询基于位置的距离?

android - Mapstruct kotlin 和 @Named 注解

android - 我需要学习 java 才能构建 Android 应用程序吗?

android - 无法在Android模拟器中模拟位置数据

Android 如何在我的自定义 Listview 中实现 AsyncTask