我的应用程序面向 API 31/Android 12,根据Google 的说法,需要 WorkManager 2.7.0 版本,因此为了做到这一点,我已添加setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)到我的OneTimeWorkRequestBuilderAndroidManifest 中并添加了必要的更改(请参阅此链接了解详情)。然而,当我运行我的应用程序时,我遇到了这个错误:
java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Expedited WorkRequests require a ListenableWorker to provide an implementation for `getForegroundInfoAsync()`
Run Code Online (Sandbox Code Playgroud)
Google 没有提供关于如何为 RxWorker 执行此操作的示例或文档,但我在 Stackoverflow 中找到了这个答案,但它是针对协程的。
getForegroundInfoAsync我的问题是你如何实现何时必须返回的RxWorker说法——阅读文档似乎我必须将 Guava 添加到我的应用程序中才能做到这一点?由于文档说getForegroundInfoAsyncListenableFuture<ForegroundInfo>ListenableFutureAvoid implementing ListenableFuture from scratch. If you can't get by with the standard implementations, prefer to derive a new Future instance with the methods in Futures or, if necessary, to extend AbstractFuture.
嘿,我正在 kotlin 中工作 WorkManager。我不明白一些代码并给我带来了这个错误。有人能更详细地向我解释一下吗?
2022-01-06 16:48:33.501 14483-14483/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 14483
java.lang.IllegalArgumentException: Expedited jobs cannot be delayed
at androidx.work.WorkRequest$Builder.build(WorkRequest.java:326)
at com.example.app.tracker.TrackerHelper.setupNotificationWorkerForNextLaunch(TrackerHelper.kt:124)
at com.example.app.tracker.TrackerHelper.setReminderOff(TrackerHelper.kt:36)
at com.example.app.tracker.TrackerHelper.switchReminder(TrackerHelper.kt:70)
at com.example.app.tracker.TrackerSettingsViewModel.switchReminder(TrackerSettingsViewModel.kt:34)
at com.example.app.tracker.TrackerSettingsViewModel.enableReminder(TrackerSettingsViewModel.kt:100)
at com.example.app.tracker.TrackerSettingsViewModel.setupReminderRow$lambda-1(TrackerSettingsViewModel.kt:85)
at com.example.app.tracker.TrackerSettingsViewModel.lambda$5Q3PVjBphM6lb1pU0jZdN9GXKaE(Unknown Source:0)
at com.example.app.tracker.-$$Lambda$TrackerSettingsViewModel$5Q3PVjBphM6lb1pU0jZdN9GXKaE.onCheckedChanged(Unknown Source:2)
at android.widget.CompoundButton.setChecked(CompoundButton.java:222)
at androidx.appcompat.widget.SwitchCompat.setChecked(SwitchCompat.java:1095)
at androidx.appcompat.widget.SwitchCompat.toggle(SwitchCompat.java:1090)
at android.widget.CompoundButton.performClick(CompoundButton.java:144)
at android.view.View.performClickInternal(View.java:7418)
at android.view.View.access$3700(View.java:835)
at android.view.View$PerformClick.run(View.java:28676)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Run Code Online (Sandbox Code Playgroud)