【问题标题】:Make JobScheduler and JobInfo.Builder run at a specific and exact time?让 JobScheduler 和 JobInfo.Builder 在特定且准确的时间运行?
【发布时间】:2019-05-23 00:31:16
【问题描述】:

我正在尝试创建一个在特定时间发送通知的应用。我正在使用 JobInfo.Builder 查看 JobScheduler API,但是当我查看此页面时:

https://developer.android.com/reference/android/app/job/JobInfo.Builder.html

我看到 setPeriodic 方法说:

指定此作业应以提供的间隔重复,而不是 每个时期不止一次。您无法控制何时在此范围内 执行此作业的时间间隔

所以看起来这个方法会在设定的时间内随机完成任务。

如何使用 JobScheduler API 将任务设置为在准确的时间发生?

【问题讨论】:

    标签: android


    【解决方案1】:

    如何使用 JobScheduler API 将任务设置为在准确的时间发生?

    你没有。 JobScheduler 专为不精确计时而设计,因此它可以组合来自多个应用程序的作业,以尝试降低功耗。

    您最好的选择是AlarmManager

    【讨论】:

    • 太棒了,谢谢……但也不是太棒了,因为 AlamrManager 不会像 JobScheduler 那样在系统重启后持续存在……
    • @Albert:正确。您需要注册 ACTION_BOOT_COMPLETED BroadcastReceiver 以在重新启动时重新建立警报。
    • @Albert:如果你的minSdkVersion 低于21,我会倾向于两者中的Evernote。AFAICT,Yigit 的库需要专有的GcmNetworkManager 来支持Android 4.4 及更低版本,而Evernote 使用AlarmManager
    • evernote android 作业又是对JobScheduler ergo inexact 的抽象。
    【解决方案2】:

    您可以使用 setMinimumLatency() 和 setOverrideDeadline() 来调度作业

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 2023-01-09
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      相关资源
      最近更新 更多