在我的Android应用程序中,我使用Firebase实时数据库来更新数据更改并显示在我的屏幕上。
@Override
public void onStart() {
super.onStart();
userReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot userData) {
userStarredMatchList.clear();
for(DataSnapshot userDataSnapshot : userData.getChildren()) {
notificationFunction();
}
}
@Override
public void onCancelled(DatabaseError databaseError) { /* BLANK */}
});
}
我做了类似这样的事情,因此每当数据在引用上更新时它就会运行。 notificationFunction()
在数据更新时运行,但问题是每当我进入此屏幕并返回到屏幕时它就会运行。
每当我刷新屏幕时,如何才能让它不运行? (仅在数据更改时运行)。
答案 0 :(得分:0)
您可以将功能包装为RxJava Observable,然后使用skip运算符对其进行过滤,以跳过第一个事件。
脱离我的头顶:
Observable<DataSnapshot> o = Observable.create(emitter -> {
userReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot userData) {
userStarredMatchList.clear();
for(DataSnapshot userDataSnapshot : userData.getChildren()) {
emitter.onNext(userDataSnapshot);
}
}
@Override
public void onCancelled(DatabaseError databaseError) { /* BLANK */}
});
}).skip(1);
然后,您可以在onStart()
中订阅它并显示您的通知。
答案 1 :(得分:0)
尝试在onCreate()中的某处移动代码。