问题标签 [android-workmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 关于 WorkManager 的 WorkerResult 的 RETRY 值
我正在使用 WorkManager 类来执行我希望我的应用程序在特定时间执行的任务。我的 Worker 类如下所示。
我使用 OneTimeWorkRequest 创建了这项工作,如下所示。
现在,当我测试这个 Worker 时,如果手机没有被充电,那么工作就会被推迟(即重试),直到手机连接上。但我想如果结果是RETRY
,那么它应该在手机连接时重试,否则就按住。
由于我没有太多关于此 BackOffPolicy 的文档,任何人都可以告诉我 RETRY 是如何工作的,它重试了多少次,什么时候重试?
android - 在android oreo中设备重启后PeriodicWorkRequest不起作用
我需要根据以下逻辑向用户推送应用程序通知。
- A 类通知将在每 24 小时后显示。
- B 类通知将在每 7 天后显示。
- C 类通知将在每 15 天后显示。
我PeriodicWorkRequest
按如下方式使用了工作管理器,在设备重新启动之前它工作正常。设备重新启动后,我的工作不会被触发。
build.gradle ---
Java 代码
android - 如何在 WorkManager Android (kotlin) 中仅运行特定的工作人员
我有一些用于工作人员的脚本,每次我尝试执行一个特定的工作人员时,它都会执行我拥有的所有脚本工作人员。
这就是我运行脚本工作者的方式:
但这是我得到的回报:
如您所见,所有工作人员也在执行它。
android - WorkManager - 永久删除定期工作人员
我使用以下代码进行了更新,每三个小时添加一个新的定期工作者。
我想发布一个更新,将“杀死”这个工作人员和这个工作人员的每个计划实例。
最好的方法是什么?
android - WorkManager - 运行周期性任务
我想使用新的 WorkManager 每 3 小时运行一次定期任务。创建应用程序时启动的工作人员。我为此使用以下代码:
MainActivity 内部
但是,似乎工作人员在定期运行时,每次都会创建 Application 类的新实例,因此会导致大量初始化代码再次运行,就好像应用程序再次被用户运行一样(这会导致错误-积极的分析、API 调用等)。有没有办法避免这种情况/有一个标志表明应用程序是由工作人员启动的?
android - 使用 WorkManagerTestInitHelper 阻止 WorkManager 完成工作的重试
当我使用:
获取WorkManager实例,WorkManager未能实现重试。我将介绍最简单的测试:
}
在 Logcat 中,我看到:
即使我独立执行 2 个测试,我也会得到相同的结果。我们看到 WorkManagerTestInitHelper 的使用 阻止了 WorkManager 完成工作的重试。
我是否正确使用WorkManagerTestInitHelper?
android - 工作状态观察者始终处于排队状态
我试图观察我的workers
,但他们总是处于queued
状态,或者有时是,RUNNING
但从来SUCCEED
没有FAILED
。
是workStatus.state
从返回doWork()
还是不同?
这是我的工作脚本:
这是观察工人的脚本:
这是 Logcat 中的结果:
java - 获取arch WorkManager运行状态
我最近开始使用 arch WorkManager 进行后台处理。由于它是一个新引入的库,因此几乎没有任何关于它的教程。我被困在这里了。我有一项服务可以检查 firebase 中的任何数据更改。如果服务被破坏,WorkManager 就会开始行动。在我的服务的 onDestroy 方法中,我有-
我只想在我之前的状态为空或未运行的情况下将工作加入队列。我不想在队列中弄乱几件作品。每次我的服务被销毁时,我上面的代码都会创建工作队列,所以它只会排队。是的,我确实阅读了这方面的教程,但所有这些都是针对 Kotlin 或具有 lambda 表达式的。PS- 仅限 Java 方法,没有 Kotlin 或 lambda 表达式。
android - 如何避免 asynctask 和 WorkManager 获取相同的数据库记录
我有两种方法可以在本地数据库和服务器之间进行同步。
- 异步任务
- 工作经理
以下是同步流程:
AsyncTask/WorkManager 从本地数据库获取数据上传到服务器 -->if (response.status == "success")
然后删除数据
但问题是,AsyncTask
并且WorkManager
可能几乎在同一时间运行并相互获取完全相同的数据,从而导致服务器中的双倍数据。
我需要同时使用这两个,因为WorkManager
它有问题并且不能被信任,而且我也不能真正Asynctask
单独依赖。
有什么办法可以避免这种双重数据?
android-jobscheduler - Oppo Realme1 Job Schduler 定期工作的最小间隔为 1 小时
目前我正在使用WorkManager 1.0.0-alpha05
. 我使用以下设置定期工作请求code
。当间隔低于 1 小时时,In Oppo Realme
(Android 版本 - 8.1.0 , ColorOSVersion V5.0
) 作业在1
hr 处执行。当间隔大于1
hr 作业在确切时间执行。当间隔小于1
小时时,作业在1
小时执行。
请让我知道所需的任何日志或信息:
安排定期作业的代码:
在所有其他设备中定期工作请求间隔是正确的。在 Oppo Realme 1 工作在1
小时执行。
Oppo Realme 1:间隔 15 分钟
我使用以下命令调试 Job Schduler:
adb shell dumpsys jobscheduler
Oppo Realme 1:间隔 1 小时 10 分钟
日志:
其他设备:
日志 :
我也尝试使用不同的库。我在 Job Scheduler 和 Android-Job 中发现了相同的行为。作业周期长度为 15 分钟,但执行时间为 1 小时,但是当我尝试使用 Firebase 作业调度程序时,作业以正确的 15 分钟间隔时间执行。
我使用以下命令调试 Job Scheduler 和 Android-Job: adb shell dumpsys jobscheduler
作业调度器:
间隔:15 分钟输出 :1 小时
日志:
Android-工作:
间隔:15 分钟输出:1 小时:
日志:
Firebase 作业调度程序:
我使用以下命令调试 firebase 作业调度程序: adb shell "dumpsys activity service GcmService | grep com.jobscheduler_periodic"
间隔: 15 分钟输出:15 分钟
日志: