Java 应用程序重新启动后Firebase磁盘持久性不工作
我在firebase和磁盘持久性方面有问题。当我脱机并使用Java 应用程序重新启动后Firebase磁盘持久性不工作,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在firebase和磁盘持久性方面有问题。当我脱机并使用setValue时: mDatabase.child(spamuId).setValue(contactSpam); 当我联机而不重新启动应用程序时,我的数据库会更新,但当我关闭应用程序并激活internet并打开应用程序时,数据库不会更新。通常不需要keepSync(),而且如果我理解得很好,它会将所有数据库引用复制到本地存储。我不知道我做错了什么我把这个放在我的应用程序课上: public class MyApplication
setValue
时:
mDatabase.child(spamuId).setValue(contactSpam);
当我联机而不重新启动应用程序时,我的数据库会更新,但当我关闭应用程序并激活internet并打开应用程序时,数据库不会更新。通常不需要keepSync()
,而且如果我理解得很好,它会将所有数据库引用复制到本地存储。我不知道我做错了什么我把这个放在我的应用程序课上:
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以1ms的时间保存总共1行,删除1行
重新启动时:
我没有看到任何持久性消息
编辑:使用我的应用程序中的简单计数测试按钮记录:
D/持久性:事务已完成。经过时间:20毫秒
D/REOPERATION:中止路径:/test的事务。影响:
/试验
D/PersistentConnection:pc_0-正在尝试获取身份验证令牌
W/BiChannelGoogleApi:[FirebaseAuth:]GetGoogleAPI方法()
返回的Gms:com.google.android.Gms.internal。zzdze@d0effca
D/PersistentConnection:pc_0-获取令牌时出错:网络错误
(例如超时、连接中断或无法访问主机)已
发生。
pc_0-计划连接尝试
D/ConnectionRetryHelper:计划在480ms内重试
D/PersistentConnection:pc_0-正在尝试获取身份验证令牌
W/BiChannelGoogleApi:[FirebaseAuth:]GetGoogleAPI方法()
返回的Gms:com.google.android.Gms.internal。zzdze@d0effca
D/PersistentConnection:pc_0-获取令牌时出错:网络错误
(例如超时、连接中断或无法访问主机)已
发生。
pc_0-计划连接尝试
D/ConnectionRetryHelper:计划在1138ms内重试
D/PersistentConnection:pc_0-正在尝试获取身份验证令牌
W/BiChannelGoogleApi:[FirebaseAuth:]GetGoogleAPI方法()
返回的Gms:com.google.android.Gms.internal。zzdze@d0effca
D/PersistentConnection:pc_0-获取令牌时出错:网络错误
(例如超时、连接中断或无法访问主机)已
发生。
pc_0-计划连接尝试
D/ConnectionRetryHelper:计划在1404ms内重试
您是否将这一行添加到您的清单中
android:name=".MyApplication"
如果没有,请添加并卸载应用程序,然后重新安装
<application
android:name=".MyApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
是的,我添加了这一行并放置了一个日志,以查看它是否进入我的类。您正在使用真实设备或虚拟设备。某些firebase功能在虚拟设备中不起作用。。这可能不是问题所在。。我只是说真正的设备,但它应该像我做的那样工作不?它应该工作。。请添加push()。在设置值之前,请确保一切在活动网络条件下正常工作。。然后检查你的问题我没有把我以前推过的所有代码都放进去,而且它在活动网络中工作。插入是在从BroadcastReceiver中启动的活动本身启动的对话框中完成的,带有标志FLAG_Activity_SINGLE_TOP FLAG_Activity_NEW_TASK和FLAG_Activity_SINGLE_TOP。但它是在我不关闭应用程序时插入的。所以我不明白。setValue()请求应该在我重新启动应用程序或启用连接时执行吗?我不确定我是否完全理解这个问题。您是说,一旦恢复internet连接,contactSpam
值就不会发送到服务器?如果是这样,首先要做的是查看服务器是否拒绝写入。如果没有显示任何内容,请检查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是否添加完成侦听器?如果是,请用新代码更新您的问题,以及是否有任何回调触发?另外,请将日志输出添加到您的问题中,特别是恢复连接后会发生什么情况。您应该看到有关数据库客户端尝试重新连接到服务器,然后发送排队写入的消息。