Java 应用程序重新启动后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

我在firebase和磁盘持久性方面有问题。当我脱机并使用
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是否添加完成侦听器?如果是,请用新代码更新您的问题,以及是否有任何回调触发?另外,请将日志输出添加到您的问题中,特别是恢复连接后会发生什么情况。您应该看到有关数据库客户端尝试重新连接到服务器,然后发送排队写入的消息。