应用程序关闭后,Firebase onDataChange Listener 是否总是自动删除?或者,不是并且计费也在增加?

Is Firebase onDataChange Listener always automatically removed after application is closed?or,not and billing is also increasing?

我正在 android.I 的 activity 中添加 ValueEventListener 我担心如果我的应用程序崩溃或无论如何,没有调用 onDestroy 那么我的听众可能不会 删除了 manually.I 也在某处使用了 system.exit,虽然我没有在服务中使用它们。现在我担心如果它们没有被删除并且我的应用程序被关闭,它们是否仍然连接并增加我的Firebase 计费?

这是一个 'yes but no' 答案,根据文档,所有侦听器都在服务器上注册,服务器调用触发器来发送更新的信息。 由于侦听器未注销,因此它不是 'removed'。相反,服务器会在几次尝试后检测到客户端超时,并停止发送请求。

实际上它们是同一件事,只是延迟了。如果会话 ID 不匹配,重新启动应用程序将不会重新连接到侦听器。

当您使用 ValueEventListener 时,这意味着:

Classes implementing this interface can be used to receive events about data changes at a location.

如果您正在使用 addValueEventListener(ValueEventListener) method, it means that you are listening for changes in real-time. This also means, that if you don't ,侦听器将保持活动状态,直到 Android OS 最终将其关闭。这意味着只要侦听器处于活动状态,“onDataChange()”将始终触发,在引用指向的位置提供数据快照。

确实不能保证一定会调用“onDestroy()”。所以很可能你应该考虑使用 addListenerForSingleValueEvent():

Add a listener for a single change in the data at this location.

没有必须删除的列表器的情况。

根据你的问题。您正在传递回调以获取数据更改。所以只需遵循 Activity 生命周期,onResume() 你可以设置回调监听器 & onStop() 移除回调监听器。如果您的应用程序崩溃,无法保证您的 activity 会维持生命周期,因此您必须自行处理崩溃。只需使用 try catch