提问人:hina abbasi 提问时间:6/28/2020 最后编辑:Ashishhina abbasi 更新时间:6/28/2020 访问量:115
FireStore anyQuery.onComplete() 将始终在主线程上运行?这很奇怪
FireStore anyQuery.onComplete() will always run on main thread ? That's weird
问:
class ExampleThread extends Thread {
@Override
public void run() {
Log.d(TAG, "ExampleThread->run: currentThread= " + Thread.currentThread().getId());
db.collection("PointsAndRating")
.orderBy("gmq", Query.Direction.DESCENDING)
.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, "ExampleThread->run: currentThread= " + Thread.currentThread().getId());
Log.d(TAG, document.getId() + "=accumulatedUpdatedNugget=@@ => " + document.getData());
} // end of for loop
}
});
}
} // end of ExampleThread
不幸的是,行返回 1。Log.d(TAG, "ExampleThread->run: currentThread= " + Thread.currentThread().getId());
答:
2赞
Frank van Puffelen
6/28/2020
#1
Firestore SDK 在单独的线程中处理其所有网络和磁盘交互。但是,对代码的所有回调都是在主线程上进行的,因此您可以从它们与 UI 进行交互。
评论