在Android应用中使用后台服务更新Firebase数据库时,我发现了一种非常奇怪的行为。仅供参考我将SetPersistanceEnabled设置为TRUE。我的Java API版本是2.5.0 +。
以下是正在发生的事情:
我有一个以STICKY开头的后台服务。此服务接收GCM,收到这些消息后,我会对Firebase数据库进行一些更新。当应用程序在前台运行时,更新工作完全正常但是一旦应用程序被杀死,更新就不会在线反映回数据库。
我可以确认当应用程序被杀死时服务重新启动,并且当GCM到达时Firebase UpdateChildren的CompletionListener被调用而没有错误,这意味着数据已被持久化(我可以根据在控制台上打印的日志语句来确认这一点)。但后来为什么我没有在网上看到更新。我认为因为持久性已启用它可能会在应用程序再次联机时将其同步回来但在重新启动应用程序并在前台运行后没有,我仍然看不到更新已同步到数据库。
有没有人遇到过类似的问题。如果我做错了,请告诉我。
BTW我没有在应用程序的任何地方使用goOnline或goOffline。
答案 0 :(得分:0)
这是FCM
,而不是GCM
...当缺少Context
时,可能无法实例化所需的对象。只需更新服务器端的记录 - 然后在下次同步时更新本地版本。
答案 1 :(得分:0)
我能够使用此代码上传到 firebase 实时数据库
class MyFirebaseService: FirebaseMessagingService() {
override fun onMessageReceived(p0: RemoteMessage) {
FirebaseData().uploadLog("${p0.data}")
}
}