提问者:小点点

FireStore anyQuery.onComplete()将始终在主线程上运行? 真奇怪


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

不幸的是,log.d(标记,“exampleThread->run:CurrentThread=”+thread.currentThread().getId());行返回1。


共1个答案

匿名用户

Firestore SDK在一个单独的线程中处理它的所有网络和磁盘交互。 但是对代码的所有回调都是在主线程上进行的,这样您就可以从它们与UI进行交互。