【问题标题】:How to close/destroy a Firebase reference in android?如何关闭/销毁 android 中的 Firebase 引用?
【发布时间】:2016-04-09 18:55:17
【问题描述】:

这是场景-:

创建了一个firebase引用

Firebase myRef = new Firebase(url)  // In Main Activity

用户点击一个按钮导航到其他活动。

主活动的onPause()被调用。有没有办法销毁这个构造函数?

此引用正在创建一些意外行为。 简单地为 Main Activity 调用 finish() 是否会破坏它?

【问题讨论】:

  • GC 在 JAVA 中搞定了这一切,你何必担心呢?
  • 在哪里创建 ref 以及在 onPause 发生之前如何处理它?什么是“意外行为”?
  • @muratgu 我想停止调用 onDataChange() 方法。我正在考虑销毁构造函数,但正如弗兰克所说,删除侦听器就可以了。 dex 是的,这里的内存根本不是问题。

标签: android firebase firebase-realtime-database


【解决方案1】:

Firebase 对象是对 Firebase 数据库中位置的轻量级引用。没有必要(也没有能力)管理它们的生命周期。所以正如@dex 评论的那样,你可以让 Java 垃圾收集器来处理它们。

另一方面,一旦您开始附加侦听器(例如addValueEventListener()),您应该在相应的生命周期事件中使用removeEventListener() 将它们分离。另见Firebase adding listeners in adapters in AndroidHow stop Listening to firebase location in android

【讨论】:

  • 是的,弗兰克这正是我试图实现的第二个链接很有帮助。
  • 只是为了澄清未来的代码参考。在第二个链接中你提到了 var listener = ref.addValueEventListener(new ValueEventListener() { // onDataChange 和 onCanceled 的实现 } );数据类型应该是 ValueEventListener 而不是 var。
  • @Frank 我正在通过 setValue 方法在 firebase 数据库中添加用户,并且在 addOnSuccessListener 上我完成了活动,但它跳过了一些键值意味着当我评论完成活动时它没有添加完整的 json 数据它工作正常如何解决这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2013-12-02
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多