gpt4 book ai didi

android - Firebase 作业未保留

转载 作者:行者123 更新时间:2023-11-30 00:02:55 24 4
gpt4 key购买 nike

自 Android 8 发生变化以来,我在设置重复作业时遇到了各种问题。我选择使用 Firebase 调度程序,因为它的 Lifetime.FOREVER 听起来很有前途。我的工作是下载一些 k 的 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 是什么意思?

最佳答案

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

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

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

关于android - Firebase 作业未保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com