Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在服务内部时需要Firebase数据库行为说明_Firebase_Firebase Realtime Database - Fatal编程技术网

在服务内部时需要Firebase数据库行为说明

在服务内部时需要Firebase数据库行为说明,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我正在测试一个功能,它要求Firebase数据库每天午夜写入。现在,在这个特定的时间,客户端应用程序可能无法连接到internet 我一直在使用关闭持久性的Firebase,因为这可能会在我的另一个功能中导致过时数据的问题 根据我的观察,如果我在写入之前断开应用程序的连接并保持这种方式一分钟左右,Firebase最终会在我再次打开连接并执行写入时重新连接 我的主要问题是: 即使连接中断数小时,这种行为是否会保持一致 Firebase会超时吗 既然它在一个永远运行的服务中,它还需要持久性来确保

我正在测试一个功能,它要求Firebase数据库每天午夜写入。现在,在这个特定的时间,客户端应用程序可能无法连接到internet

我一直在使用关闭持久性的Firebase,因为这可能会在我的另一个功能中导致过时数据的问题

根据我的观察,如果我在写入之前断开应用程序的连接并保持这种方式一分钟左右,Firebase最终会在我再次打开连接并执行写入时重新连接

我的主要问题是:

  • 即使连接中断数小时,这种行为是否会保持一致

  • Firebase会超时吗

既然它在一个永远运行的服务中,它还需要持久性来确保写操作不会丢失吗?(假设服务没有重新启动)


如果服务确实重新启动,写入是否会丢失?

我对这种情况有一定的经验,实际上我不建议使用后台服务来管理Firebase请求。事实上,我根本不建议管理Firebase请求(稍后解释)

服务,即使我们可以让它们永远运行,实际上往往会被系统杀死很多(除非您将它们的CPU优先级设置为更高的级别,但即使这样,系统仍然可能杀死它们)

如果您调用Firebase写调用(任何类型),并且您的服务被终止,那么正如您所说,写操作将丢失。除非您创建了一个复杂的管理器,在其中存储尚未提交到内部存储中的请求,并在每次重新启动服务时将其加载-但考虑到Firebase开发人员照顾我们并使
.setPersistenceEnabled(true)
:,这是一项非常肮脏的工作

我知道,你提到你不想使用它,但我强烈建议你这样做。它工作起来很有魅力,不需要任何服务,而且您根本不必担心如何管理您的写请求。也许最好解决你的另一个问题,使之成为可能

总而言之,在你的情况下,我会这样做:

  • 我会在一开始的某个地方调用
    .setPersistenceEnabled(true)
    (建议扩展
    应用程序
    类并从
    onCreate()调用它)
  • 我会使用安卓系统,注册一个
    广播接收器
    ,在午夜接收警报(重复与否,由你决定)
  • 在BroadcastReceiver内部,我只需调用Firebase的一个write函数,无需担心:)
  • 为了确保我涵盖了您的所有问题:

  • 这种行为会持续下去吗

  • 否。案例场景:午夜时间,您的服务已成功接收呼叫,并且正在尝试写入Firebase。例如,如果用户在早上6点之前没有连接(只是一个案例场景),那么系统很有可能在这6个小时内将其杀死,并且您的写入将丢失。飞行时间,或者呆在没有互联网覆盖的地区——这两种情况都可能破坏应用程序的一致性

  • Firebase会超时吗

  • 如前所述,它肯定可以。我不会冒险做一个80-90%都能正常工作的应用程序。使用持久性并拥有100%工作的应用程序:)

    我相信我已经回答了其余的问题


    祝你好运

    谢谢你。。。我去看看。。。。希望我能处理另一个问题,然后lol:)我实际上在考虑实现你所说的复杂系统lol:'我也有这个疑问,你解释的方式是值得称赞的。谢谢