Android:通过我的应用程序使用一个 Firebase ChildEventListener
Posted
技术标签:
【中文标题】Android:通过我的应用程序使用一个 Firebase ChildEventListener【英文标题】:Android: using one Firebase ChildEventListener through my app 【发布时间】:2017-08-04 13:22:16 【问题描述】:我正在寻找一种方法来使用ChildEventListener
在每次活动中收听我的数据库中的特定位置。
我有一个购物应用,我需要通过该应用监听用户的订单状态,以显示警报并在本地保存数据。
我有两个想法:
-
我想过在
OnResume()
中附加和分离监听器
和每个Activity
的OnPause()
,但代码将在
每个Activity
,因为它做同样的工作。
我考虑将一个监听器附加到MainActivity
,然后发送
广播到其他活动,但由于 MainActivity
被销毁而失败
--
监听一个节点并保持应用同步的最佳做法是什么?
【问题讨论】:
【参考方案1】:使用多个侦听器时,Firebase 没有问题,即使它是同一个侦听器。只要您根据 Activity 的生命周期移除监听器,Firebase 就会几乎完美地处理监听器。
你的班级应该是这样的:
public class HelperClass extends Application
private DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
public static verifyStatus()
databaseReference.addChildEventListener() /* ... */
您需要根据活动的生命周期删除监听器。如果您在onStart
中添加了侦听器,则必须在onStop
中删除它。如果您在onResume
中添加了侦听器,则必须在onPause
中删除它。如果您在onCreate
中添加了侦听器,则必须在onDestroy
中删除它。但请记住 onDestroy 并不总是被调用。
希望对你有帮助。
【讨论】:
你说得对,但我的目标是集中工作,所以以后修改代码很容易。 在这种情况下,您可以创建一个HelperClass
,您可以在其中创建一个可以在您需要的每个活动中重复使用的方法。
这很简单...听起来是个好主意,但如果我在每个活动中创建侦听器不会有延迟吗?
现在会有延迟,因为每个监听器都会被分开处理。请记住,Firebase 它是一个实时数据库。
谢谢,这就是我需要听到的,关于生命周期的任何建议? onPause()
和 onResume()
会完美地完成这项工作吗?【参考方案2】:
尝试以这种方式创建一个 class,然后在 class 内部创建您想要的 method:
public class firebaseutils
public static void check()
然后在你想要的地方调用这个类,像这样:
firebaseutils.check();
【讨论】:
【参考方案3】:最近我解决了同样的问题。因此,创建一个 ChildEventListener 的处理程序类,它有一个实例,如 FirebaseDatabase、FirebaseAuth 和其他 Firebase 服务。那个类和这个sn-p是一样的:
public class ShopHandler implements ChildEventListener
private static ShopHandler current = null;
private DatabaseReference databaseReference;
private ShopHandler()
public synchronized static void attach()
if (current = null)
current = new ShopHandler();
databaseReference = FirebaseDatabase.getInstance().getReference("data/yournode");
databaseReference.addChildEventListener(this);
public syncrhonized static void detach()
// remove listeners and set current as null
// implements all methods about ChildEventListener
【讨论】:
以上是关于Android:通过我的应用程序使用一个 Firebase ChildEventListener的主要内容,如果未能解决你的问题,请参考以下文章
休眠后,Android应用程序在kindle fire上关闭
如何区分 Android 应用程序是不是在 Amazon Kindle Fire 上运行?
Fire-base 卡住并且无法与 android studio 连接