【发布时间】:2017-12-04 04:13:28
【问题描述】:
我正在使用 Firebase 实时数据库开发一个安卓应用。
每当数据库中的数据发生变化时,我的addValueEventListener 就会运行特定的参考。它也会在应用程序启动时运行。这些对我来说很有意义,但是当我从不同的活动返回我的应用程序时,它甚至会运行。例如,当我转到手机的 HOME 屏幕并返回此应用程序时,它会运行,addValueEventListener 运行。
这对我来说是个问题,因为每当我的应用程序中发生数据更改时,我都会执行vibration。我在第一次访问应用程序时放置了一个全局int 变量以防止vibration。
它的工作原理是:
matchReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(notificationCounter > 0) notifyGoals(getView());
clearCurrentList();
notificationCounter++;
// Fires every single time the channelReference updates in the
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我在这个函数之外初始化int notificationCounter = 0,这样每当我重新运行这个应用程序时它就会被重置为0。但是,每当我在手机上进行不同的活动(主屏幕或锁定屏幕)并返回此屏幕时,它会在 int notificationCounter = 0 初始化之前运行 addValueEventListener。我该如何解决这个问题?
【问题讨论】:
-
创建函数并在 addValueEventListener 中调用它,并在该函数中初始化 notificationCounter = 0
-
你在哪里调用 matchReference.addValueEventListener?是否在 onResume 中
-
@RissmonSuresh 抱歉没有提及。它在 onStart
-
@WaleedAsim 与我在代码中所做的有什么不同?
-
尝试将其移入 onCreate
标签: android firebase firebase-realtime-database