【发布时间】:2020-08-23 07:23:25
【问题描述】:
据此:
Firebase 数据库客户端执行所有网络和磁盘操作 关闭主线程。 Firebase 数据库客户端调用所有 在主线程上回调您的代码。
因此数据库的网络和磁盘访问没有理由启动 您自己的线程或使用后台任务。但是如果你做磁盘,网络 回调中的 I/O 或 CPU 密集型操作,您可能需要 自己在主线程之外执行这些操作。
是的,这正是它的作用:
FireBaseValueEventListenerW postListener = new FireBaseValueEventListenerW() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
**** MAIN THREAD *****
}
};
**** RANDOM THREAD *****
ref.childInfoIndex()
.orderByChild(ReferenceInfo.Index.ref)
.limitToFirst(1)
.addListenerForSingleValueEvent(postListener);
这就是我的问题。有没有办法强制firebase在发出请求的同一个线程中回答? 一种简单的方法,无需强迫您每个人将逻辑写入可运行文件中以将其推回应有的位置。
谢谢。
【问题讨论】:
-
似乎是个糟糕的主意,你为什么要这样做。最好让文档保持原样,使用 rxjava 或协程进行后期处理。
-
因为我在答案中所做的工作与主线程无关;)。不管怎样,我找到了我喜欢的方式。
标签: android multithreading firebase