我是否需要 Android 服务来检查数据库中是否发生了某些更改?

Do I need an Android Service to check if something is changed in the DB?

我正在创建 android 应用程序,并使用 Firebase。 我有 'Missions','Mission' 有地位。 如果状态更改为 'Active' - 我需要 'Wake up' 我的应用程序和 运行 'ActiveMissionActivity' 的代码。 (服务的工作应该只是'Waking up the app',去另一个activity)

我可以编写 missionsDbRed onChildChanged 侦听器,它将在状态为活动时激活 - 但仅当应用程序处于 运行ning 时。

解决此问题的最佳做法是什么?我的朋友建议我使用 'Android Service',但我不确定我需要哪种类型,以及是否有适合 Firebase DB 的东西。

例如我看过'Firebase Cloud Functions'但是我不确定哪个更合适以及为什么。谢谢

因此,如果在您的应用关闭时状态变为活动状态,那么这意味着值在您的应用之外的某个地方发生了变化,对吧?如果是这种情况,只需向用户设备发送推送通知即可将其唤醒。它比使用后台服务更高效。

由于 push-notifications 无法解决您的问题,处理此问题的最佳方法是构建一个服务来检查(在数据库中)您感兴趣的值是否已更改。

现在关于服务,一个坏主意是 运行 一个持续检查该值的服务。这将导致大量电池耗尽,并且您冒着进程被终止的风险,因为 android 正在释放资源。你可以注意到这个 here.

您可以通过告诉服务何时开始检查您感兴趣的值来解决此问题。(例如,通过使用 Alarm API and assuming you know when this should happen) You can see something similar here

尽可能少地保持服务活跃可能是最安全的方法。

至于 google 云功能,您可能希望使用这些功能在通过您建立的服务发生的操作之前发送通知。