问题标签 [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.

0 投票
0 回答
1091 浏览

java - 关于 WorkManager 的 WorkerResult 的 RETRY 值

我正在使用 WorkManager 类来执行我希望我的应用程序在特定时间执行的任务。我的 Worker 类如下所示。

我使用 OneTimeWorkRequest 创建了这项工作,如下所示。

现在,当我测试这个 Worker 时,如果手机没有被充电,那么工作就会被推迟(即重试),直到手机连接上。但我想如果结果是RETRY,那么它应该在手机连接时重试,否则就按住。

由于我没有太多关于此 BackOffPolicy 的文档,任何人都可以告诉我 RETRY 是如何工作的,它重试了多少次,什么时候重试?

0 投票
6 回答
5696 浏览

android - 在android oreo中设备重启后PeriodicWorkRequest不起作用

我需要根据以下逻辑向用户推送应用程序通知。

  • A 类通知将在每 24 小时后显示。
  • B 类通知将在每 7 天后显示。
  • C 类通知将在每 15 天后显示。

PeriodicWorkRequest按如下方式使用了工作管理器,在设备重新启动之前它工作正常。设备重新启动后,我的工作不会被触发。

build.gradle ---

Java 代码

0 投票
2 回答
282 浏览

android - 如何在 WorkManager Android (kotlin) 中仅运行特定的工作人员

我有一些用于工作人员的脚本,每次我尝试执行一个特定的工作人员时,它都会执行我拥有的所有脚本工作人员。

这就是我运行脚本工作者的方式:

但这是我得到的回报:

如您所见,所有工作人员也在执行它。

0 投票
2 回答
6111 浏览

android - WorkManager - 永久删除定期工作人员

我使用以下代码进行了更新,每三个小时添加一个新的定期工作者。

我想发布一个更新,将“杀死”这个工作人员和这个工作人员的每个计划实例。

最好的方法是什么?

0 投票
1 回答
1342 浏览

android - WorkManager - 运行周期性任务

我想使用新的 WorkManager 每 3 小时运行一次定期任务。创建应用程序时启动的工作人员。我为此使用以下代码:

MainActivity 内部

但是,似乎工作人员在定期运行时,每次都会创建 Application 类的新实例,因此会导致大量初始化代码再次运行,就好像应用程序再次被用户运行一样(这会导致错误-积极的分析、API 调用等)。有没有办法避免这种情况/有一个标志表明应用程序是由工作人员启动的?

0 投票
1 回答
776 浏览

android - 使用 WorkManagerTestInitHelper 阻止 WorkManager 完成工作的重试

当我使用:

获取WorkManager实例,WorkManager未能实现重试。我将介绍最简单的测试:

}

在 Logcat 中,我看到:

即使我独立执行 2 个测试,我也会得到相同的结果。我们看到 WorkManagerTestInitHelper 的使用 阻止了 WorkManager 完成工作的重试。

我是否正确使用WorkManagerTestInitHelper

0 投票
3 回答
2295 浏览

android - 工作状态观察者始终处于排队状态

我试图观察我的workers,但他们总是处于queued状态,或者有时是,RUNNING但从来SUCCEED没有FAILED

workStatus.state从返回doWork()还是不同?

这是我的工作脚本:

这是观察工人的脚本:

这是 Logcat 中的结果:

0 投票
1 回答
352 浏览

java - 获取arch WorkManager运行状态

我最近开始使用 arch WorkManager 进行后台处理。由于它是一个新引入的库,因此几乎没有任何关于它的教程。我被困在这里了。我有一项服务可以检查 firebase 中的任何数据更改。如果服务被破坏,WorkManager 就会开始行动。在我的服务的 onDestroy 方法中,我有-

我只想在我之前的状态为空或未运行的情况下将工作加入队列。我不想在队列中弄乱几件作品。每次我的服务被销毁时,我上面的代码都会创建工作队列,所以它只会排队。是的,我确实阅读了这方面的教程,但所有这些都是针对 Kotlin 或具有 lambda 表达式的。PS- 仅限 Java 方法,没有 Kotlin 或 lambda 表达式。

0 投票
1 回答
394 浏览

android - 如何避免 asynctask 和 WorkManager 获取相同的数据库记录

我有两种方法可以在本地数据库和服务器之间进行同步。

  1. 异步任务
  2. 工作经理

以下是同步流程:

AsyncTask/WorkManager 从本地数据库获取数据上传到服务器 -->if (response.status == "success")然后删除数据

但问题是,AsyncTask并且WorkManager可能几乎在同一时间运行并相互获取完全相同的数据,从而导致服务器中的双倍数据。

我需要同时使用这两个,因为WorkManager它有问题并且不能被信任,而且我也不能真正Asynctask单独依赖。

有什么办法可以避免这种双重数据?

0 投票
1 回答
479 浏览

android-jobscheduler - Oppo Realme1 Job Schduler 定期工作的最小间隔为 1 小时

目前我正在使用WorkManager 1.0.0-alpha05. 我使用以下设置定期工作请求code。当间隔低于 1 小时时,In Oppo Realme(Android 版本 - 8.1.0 , ColorOSVersion V5.0) 作业在1hr 处执行。当间隔大于1hr 作业在确切时间执行。当间隔小于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 分钟

日志