在Android应用程序

时间:2015-05-21 17:09:44

标签: android firebase

我们正在构建一个应用程序,在应用程序中,我们计算并存储用户交互/打开应用程序的次数。 当应用程序到达前台时,我们会在firebase上更新一个计数器。

我们正面临三星Galaxy S4的问题,当用户在应用程序运行时在WIFI网络之间切换时,从第二个网络切换开始,没有数据在firebase上更新。在任何其他Android / iO移动设备上均未发现此问题。

问题解释:

假设有两个WIFI网络A和B

  1. 用户连接到WIFI网络A并打开应用程序。我们在firebase中增加一个反“活动”。假设“活动”值为0,现在变为1。
  2. 当应用程序进入后台模式并进入前台时,我们再次增加firebase上的计数器“活动”,因此“活动”变为2.只要用户处于WIFI网络A中,递增计数器“活动”就会起作用细。
  3. 当用户连接到另一个WIFI网络时说B并打开应用程序时,会触发计数器“活动”增量操作,但数据不会存储在firebase上。 (计算机'活动'对firebase的价值仍为2)
  4. 现在,当用户切换回WIFI网络A,并将应用程序带到前台增量操作时,将值递增两次,因此计数器'activity'变为4. on firebase值从2跳到4,但是当用户打开时WIFI网络B数据未更新,意味着重新连接到网络A正在触发增量操作两次,这使计数器的“活动”值变为4。

1 个答案:

答案 0 :(得分:1)

当Firebase Android客户端失去连接时,它会保留任何写入操作的队列。当它再次联机时,它会应用这些写操作。

在您的情况下,Firebase无法在网络B上建立连接。因此,在您的步骤3中,写入操作最终会排队。

然后在步骤4中将其应用于服务器,之后下一次写入操作将再次递增activity值。