gpt4 book ai didi

firebase - 如何使用 RxJava 2 改进从 Firebase 数据库读取 Flowable 数据?
转载 作者:行者123 更新时间:2023-12-04 15:31:05 25 4
gpt4 key购买 nike

我有 Recycler Viewer 显示来自 Fire Base db 的数据,但是初始 List 包含大约 4k 个元素。我试图只显示前 15 个元素,而不是等待加载完整列表,但不知道该怎么做。
我正在尝试通过 Subscriber 获取 (x) 个元素,但是它并没有提高读取性能(它仍然等待来自 Firebase DB 的 4k 元素)。如何加快这个速度?
订阅者 - 演示者

@Override
public void onBindViewHolder(final ListContentFragment.ViewHolder holder, int position) {

modelInterface.getDataFromFireBase("FinalSymbols")
.take(15)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<DataSnapshot>() {
@Override
public void accept(DataSnapshot dataFromDb) throws Exception {
//update TextView inside Recycler Viewer
holder.name.setText(dataFromDb.child(String.valueOf(holder.getAdapterPosition())).child("description").getValue().toString());
holder.description.setText(dataFromDb.child(String.valueOf(holder.getAdapterPosition())).child("categoryName").getValue().toString());
}
}
);
}
发布者 - 数据源(FireBase db)
@Override
public Flowable<DataSnapshot> getDataFromFireBase(final String childName) {
return Flowable.create(new FlowableOnSubscribe<DataSnapshot>() {
@Override
public void subscribe(final FlowableEmitter<DataSnapshot> e) throws Exception {
databaseReference.child(childName).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
e.onNext(dataSnapshot);
e.onComplete();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
}, BackpressureStrategy.BUFFER);

最佳答案

我相信你需要使用方法limitToFirst() .

像这样的东西:

@Override
public Flowable<DataSnapshot> getDataFromFireBase(final String childName) {
return Flowable.create(new FlowableOnSubscribe<DataSnapshot>() {
@Override
public void subscribe(final FlowableEmitter<DataSnapshot> e) throws Exception {
databaseReference.child(childName).limitToFirst(15).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
e.onNext(dataSnapshot);
e.onComplete();
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
}, BackpressureStrategy.BUFFER);

关于firebase - 如何使用 RxJava 2 改进从 Firebase 数据库读取 Flowable<Object> 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471406/

25 4 0