【发布时间】:2018-11-10 06:30:01
【问题描述】:
我对 firebase 和磁盘持久性有疑问。当我离线并使用setValue时:
mDatabase.child(spamuId).setValue(contactSpam);
当我在没有重新启动应用程序的情况下上网时,我的数据库已更新,但当我关闭应用程序并激活互联网并打开应用程序时,数据库未更新。通常不需要keepSync(),如果我理解得很好,它会将所有databaseReference 复制到本地存储。我不知道我做错了什么我把它放在我的应用程序类中:
public class MyApplication extends Application {
@Override
public void onCreate() {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
如果有人能给我解释,我将不胜感激。
编辑:logcat
当我不重新启动应用程序并且没问题时:
0-556/practical_solutions.fr.numfilterpro D/Persistence:在/ContactReportNoSpamFr/-LDGJofYHq5hTpwD8LqV/date in 1ms 共保留 1 行并删除 1 行
当我重新启动时: 我没有看到任何持久性消息。
编辑:在我的应用中使用简单的计数测试按钮记录:
D/Persistence:交易已完成。经过:20ms
D/RepoOperation:正在中止路径的事务:/test。做作的: /测试
D/PersistentConnection: pc_0 - 试图获取授权令牌
W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() 返回 Gms:com.google.android.gms.internal.zzdze@d0effca
D/PersistentConnection: pc_0 - 获取令牌时出错:网络错误 (如超时、连接中断或主机不可达)有 发生了。 pc_0 - 计划连接尝试
D/ConnectionRetryHelper:安排在 480 毫秒内重试
D/PersistentConnection: pc_0 - 试图获取授权令牌 W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() 返回 Gms:com.google.android.gms.internal.zzdze@d0effca
D/PersistentConnection: pc_0 - 获取令牌时出错:网络错误 (如超时、连接中断或主机不可达)有 发生了。 pc_0 - 计划连接尝试
D/ConnectionRetryHelper:在 1138 毫秒内安排重试
D/PersistentConnection: pc_0 - 试图获取授权令牌
W/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() 返回 Gms:com.google.android.gms.internal.zzdze@d0effca
D/PersistentConnection: pc_0 - 获取令牌时出错:网络错误 (如超时、连接中断或主机不可达)有 发生了。 pc_0 - 计划连接尝试
D/ConnectionRetryHelper:在 1404 毫秒内安排重试
【问题讨论】:
-
我不确定我是否完全理解了这个问题。您是说在您恢复 Internet 连接后,
contactSpam值永远不会发送到服务器? -
如果是这种情况,首先要做的是add a completion listener,看看写入是否被服务器拒绝。如果这没有显示任何内容,请enable debug logging 并检查 logcat 输出以查看在您恢复连接时 Firebase 客户端和服务器之间会发生什么。
-
只有当我在恢复连接之前关闭应用程序时,一旦互联网连接恢复,contactSpam 永远不会被发送到服务器。我会检查所有的。谢谢。
-
这让我很紧张。没什么特别的,我有这个错误:06-01 11:15:06.259 1775-4141/? E/RemoteViewsAdapterServiceConnection: onServiceDisconnected 当我重新连接这个但什么也没发生 06-01 11:14:14.912 4121-4142/practical_solutions.fr.bloqueurappelsetsms V/FA: 处理排队的服务任务: 4
-
你添加完成监听了吗?如果是这样,请使用新代码更新您的问题,以及是否有任何回调触发?另外请将日志输出添加到您的问题中,特别是在连接恢复后会发生什么。您应该会看到有关数据库客户端尝试重新连接到服务器,然后发送这些排队写入的消息。
标签: java android firebase firebase-realtime-database