Android Studio通知:如何仅在Firebase数据库上更改数据时运行通知

时间:2017-12-03 05:02:50

标签: android firebase

在我的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()在数据更新时运行,但问题是每当我进入此屏幕并返回到屏幕时它就会运行。

每当我刷新屏幕时,如何才能让它不运行? (仅在数据更改时运行)。

2 个答案:

答案 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()中的某处移动代码。