Dmi*_*hov 9 java android firebase google-cloud-firestore
我在我的Android应用程序中的一个单独的线程中使用Cloud Firestore,所以我不想使用侦听器OnSuccessListener并OnFailureListener在另一个线程中运行.我可以让我的线程等待结果(并在需要时捕获任何异常)吗?
目前查询代码是这样的:
FirebaseFirestore.getInstance().collection("someCollection").get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot documentSnapshots) {
// do something on the UI thread with the retrieved data
}
});
Run Code Online (Sandbox Code Playgroud)
我想要的是:
FirebaseFirestore.getInstance().collection("someCollection").getAndWaitForResult();
//Block the thread and wait for result, no callbacks.
//getAndWaitForResult() is not a real function, just something to describe my intention.
Run Code Online (Sandbox Code Playgroud)
我之前曾经使用过Parse Server,而且它在那里非常简单.
Dut*_*ers 15
您可以同步加载数据,因为a DocumentReference.get()返回a Task.所以你可以等待那个任务.
如果我这样做:
val task: Task<DocumentSnapshot> = docRef.get()
Run Code Online (Sandbox Code Playgroud)
然后我可以等待它完成
val snap: DocumentSnapshot = Tasks.await(task)
Run Code Online (Sandbox Code Playgroud)
当在get()之后将其他操作连接在一起时,这可能需要一段时间,这很有用:
val任务:Task = docRef.get().continueWith(executor,continuation)
上面,我在一个单独的执行器上运行一个延续,我可以等待一切完成Tasks.await(task).
请参阅https://developers.google.com/android/guides/tasks
注意:您不能在主线程上调用Tasks.await().Tasks API专门检查此情况并将引发异常.
还有另一种使用事务同步运行的方法.看到这个问题.
| 归档时间: |
|
| 查看次数: |
5782 次 |
| 最近记录: |