在服务内部时需要Firebase数据库行为说明
我正在测试一个功能,它要求Firebase数据库每天午夜写入。现在,在这个特定的时间,客户端应用程序可能无法连接到internet 我一直在使用关闭持久性的Firebase,因为这可能会在我的另一个功能中导致过时数据的问题 根据我的观察,如果我在写入之前断开应用程序的连接并保持这种方式一分钟左右,Firebase最终会在我再次打开连接并执行写入时重新连接 我的主要问题是:在服务内部时需要Firebase数据库行为说明,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在测试一个功能,它要求Firebase数据库每天午夜写入。现在,在这个特定的时间,客户端应用程序可能无法连接到internet 我一直在使用关闭持久性的Firebase,因为这可能会在我的另一个功能中导致过时数据的问题 根据我的观察,如果我在写入之前断开应用程序的连接并保持这种方式一分钟左右,Firebase最终会在我再次打开连接并执行写入时重新连接 我的主要问题是: 即使连接中断数小时,这种行为是否会保持一致 Firebase会超时吗 既然它在一个永远运行的服务中,它还需要持久性来确保
- 即使连接中断数小时,这种行为是否会保持一致
- Firebase会超时吗
如果服务确实重新启动,写入是否会丢失?我对这种情况有一定的经验,实际上我不建议使用后台服务来管理Firebase请求。事实上,我根本不建议管理Firebase请求(稍后解释) 服务,即使我们可以让它们永远运行,实际上往往会被系统杀死很多(除非您将它们的CPU优先级设置为更高的级别,但即使这样,系统仍然可能杀死它们) 如果您调用Firebase写调用(任何类型),并且您的服务被终止,那么正如您所说,写操作将丢失。除非您创建了一个复杂的管理器,在其中存储尚未提交到内部存储中的请求,并在每次重新启动服务时将其加载-但考虑到Firebase开发人员照顾我们并使
.setPersistenceEnabled(true)
:,这是一项非常肮脏的工作
我知道,你提到你不想使用它,但我强烈建议你这样做。它工作起来很有魅力,不需要任何服务,而且您根本不必担心如何管理您的写请求。也许最好解决你的另一个问题,使之成为可能
总而言之,在你的情况下,我会这样做:
.setPersistenceEnabled(true)
(建议扩展应用程序
类并从onCreate()调用它)
广播接收器
,在午夜接收警报(重复与否,由你决定)祝你好运 谢谢你。。。我去看看。。。。希望我能处理另一个问题,然后lol:)我实际上在考虑实现你所说的复杂系统lol:'我也有这个疑问,你解释的方式是值得称赞的。谢谢