【问题标题】:EverNote android-job: How can I run a job at a specific time once a day every week?EverNote android-job:如何每周在特定时间运行一次作业?
【发布时间】:2017-06-09 15:37:24
【问题描述】:

我正在用 android 开发一个每周调度程序,我对使用 evernote 在特定时间(例如下午 4 点)触发的周期性工作(例如每周一次)很感兴趣安卓工作

我看过这篇文章

https://github.com/evernote/android-job/blob/master/FAQ.md#how-can-i-run-a-job-at-a-specific-time-once-a-day

我可以每天运行一次工作,但这不是我的情况。 如果我设置

new JobRequest.Builder( MY_TAG ) .setExact( TimeUnit.HOURS.toMillis( 16 ) + TimeUnit.MINUTES.toMillis( 0 )) .setPeriodic( TimeUnit.DAYS.toMillis( 7 ), TimeUnit.MINUTES.toMillis(5) ) .setPersisted(true) .build() .schedule();

我有这个错误

“不能在定期作业上调用 setExact()”

有人可以帮我吗?

【问题讨论】:

    标签: evernote android-jobscheduler android-job


    【解决方案1】:

    setExact() 和 setPeriodic() 是两个不同的特性,它们不能耦合。 如果您想定期使用 setExact,则必须在之前设置的作业运行后再次以编程方式安排作业。

    【讨论】:

      【解决方案2】:

      试试这个家伙。

      public final class MyDailyJob extends DailyJob {
      public static final String TAG = "MyDailyJob";
      public static void schedule() {
          // schedule between 1 and 6 AM
          DailyJob.schedule(new JobRequest.Builder(TAG), TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(6));
      }
      
      @NonNull
      @Override
      protected DailyJobResult onRunDailyJob(Params params) {
          return DailyJobResult.SUCCESS;
       }
      }
      

      参考link

      【讨论】:

      • 谢谢,不过我建议在发布代码时使用适当的缩进
      • 是的,我很抱歉@CertainPerformance,我是新来的。但是代码缩进是错误的吗?
      • 对于这么琐碎的事情并不那么重要,但看起来好像整个 MyDailyJob 可能应该缩进(向代码的任何读者指示分组块),但不是
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多