【问题标题】:Android - run job in Firebase job scheduler at specific date and timeAndroid - 在特定日期和时间在 Firebase 作业调度程序中运行作业
【发布时间】:2017-12-13 09:11:48
【问题描述】:

我在我们的应用程序中使用AlarmManager 来设置在特定日期和时间设置的闹钟。现在最近很少有我们应用程序的用户抱怨这些警报没有弹出。此外,在 Android O 指南中,提到应用程序不应运行任何后台服务,而应切换到FirebaseJobDispatcher。我有以下 2 个问题

  1. 在我们的应用程序中,除了在指定的时间和日期向用户显示通知外,我们不执行任何后台任务。即使在这种情况下,我们是否应该切换到FirebaseJobdispatcher?
  2. 如果我们确实需要切换到JobDispatcher,如何将作业设置为在特定的日期和时间运行?

【问题讨论】:

    标签: android firebase android-8.0-oreo firebase-job-dispatcher


    【解决方案1】:

    因为你没有做任何后台任务,比如网络请求或长时间运行的 CPU 操作,我认为你应该继续使用Alarm Manager。

    现在最近很少有我们应用的用户抱怨这些警报没有弹出。

    这是因为当doze mode触发时,不能保证你的警报会被触发(见this)。

    您可以根据 API 级别 >= 23 的要求使用 AlarmManager 类中的 setAndAllowWhileIdle() 或 setExactAndAllowWhileIdle() 方法。

    根据文档,这些适用于通知目的。 setAndAllowWhileIdle() 文档:

    喜欢set(int, long, PendingIntent),但此警报将被允许 即使系统处于低功耗空闲模式也执行。这类 警报只能用于实际需要的情况 空闲时警报响起——一个合理的例子是 对于应该发出声音的日历通知,以便用户 意识到这一点。当警报发出时,应用程序也将被添加 到系统的临时白名单大约 10 秒 允许该应用程序获取更多唤醒锁,以便 完成它的工作。

    【讨论】:

    • 感谢 Yash 的回复。无法彻底解决。 RedMi Note 4 等许多设备都存在问题。如果用户从后台终止应用程序,则不会显示通知。在这种情况下,用户必须从设置中明确地将应用程序列入白名单。甚至三星也有智能管理器,如果您的应用程序处于非活动状态超过 2-3 天,它会禁用它
    • 对于小米设备,你需要有自动启动权限,否则如果用户从最近的应用程序中清除它,你的应用程序将被杀死。您可以要求用户授予此权限。对于其他设备,请参阅此github.com/dirkam/backgroundable-android
    • 我们正在这样做,但要求用户授予权限并不是一个无缝的流程。
    • 是的,这不是一个无缝的流程,即使我在我的应用程序中也会遇到这种情况。但是,根据以下链接,如果未将其列入白名单,则无法将其删除 ny Xiaomi。 stackoverflow.com/a/39476850
    • @MonicaR 小米设备的自动启动权限问题解决了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 2013-10-03
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多