【问题标题】:Firebase job not persistedFirebase 作业未保留
【发布时间】:2018-03-29 23:01:16
【问题描述】:

自从 Android 8 发生变化后,我在设置定期工作时遇到了各种问题。我选择使用 Firebase 调度程序,因为它的 Lifetime.FOREVER 听起来很有希望。我的工作会下载一些 JSON 数据并定期存储,时间并不那么重要。这是我创建工作的代码:

dispatcher.newJobBuilder()
            .setService(MPWService.class)
            .setTag("mpw-updater")
            .setRecurring(true)
            .setLifetime(Lifetime.FOREVER)
            .setTrigger(periodicTrigger(intervalMsec, (intervalMsec/100)*10))
            .setReplaceCurrent(true)
            // retry with exponential backoff
            //.setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
            .setExtras(myExtrasBundle)
            .build();

几乎按预期工作,根据intervalMsec 每 30 分钟左右安排一次。但是,当应用程序长时间不使用(并且不再使用全局接收器重新安排作业)或设备重新启动时,将不再安排作业。

用于调度作业的代码放在 Activity 的 onCreate 方法中:

    FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
    Job myJob = MPWService.getJobUpdate(prefs, dispatcher);
    dispatcher.schedule(myJob);

我尝试使用 adb shell dumpsys activity service GcmService | grep mystuff 调试我的服务,然后我的问题来了

   (scheduled) it.angelic.mpw/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="mpw-updater" 
           trigger=window{start=1620s,end=1800s,earliest=1612s,latest=1792s} requirements=[NET_ANY] attributes=[RECURRING] scheduled=-7s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1}
   (finished) [it.angelic.mpw/com.firebase.jobdispatcher.GooglePlayReceiver:mpw-updater,u0]

我的问题:

  1. 为什么 last_run=N/A ?我很确定我总是通过jobFinished() 调用来结束服务执行。
  2. 为什么我的工作属性被标记为 [RECURRING] 而不是我所期望的 [PERSISTED,RECURRING]?
  3. earliest=1612s,latest=1792s是什么意思?

【问题讨论】:

    标签: android firebase android-jobscheduler firebase-job-dispatcher


    【解决方案1】:

    嗯,很快发现.setLifetime(Lifetime.FOREVER) 需要:

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    

    在清单中。请看问题1和3,谢谢

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-26
      • 2017-07-08
      相关资源
      最近更新 更多