问题标签 [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 投票
3 回答
2846 浏览

java - 如何在特定时间将 WorkManager OneTimeWorkRequest 入队

我有一个场景,我必须在特定时间使用 WorkManager 给用户通知。

我如何在特定时间安排工作,即使用户强制终止应用程序,它也应该显示出来。或应用程序未运行。

我当前的代码如下:

0 投票
1 回答
2365 浏览

android - 如何为 WIFI 和蜂窝数据设置不同的工作管理器约束

在我的应用程序中,我将工作管理器用于定期工作。在下面的代码中,如果设备有互联网连接,我的工作每 4 小时执行一次。

现在我想更改时间 - 如果设备连接到 WIFI,则工作应在每 20 分钟后执行一次,如果设备连接到蜂窝数据,则工作应在 12 小时后执行。如何实现这一点。提前致谢

0 投票
1 回答
1630 浏览

android - 序列化时数据占用不能超过10240KB [android-workmanager]

在我运行以下代码后:

我收到此错误:

java.lang.IllegalStateException: 序列化时数据占用不能超过10240KB

所以我读了代码,我发现有问题

数据类

数据类

MAX_DATA_BYTES 不能超过 10KB ???

MAX_DATA_BYTES 不能超过 10KB ???

0 投票
1 回答
722 浏览

android - 为什么 WorkManager 不能与 OneTimeWorkRequest 一起正常工作?

我对 Android 架构组件中的 WorkManager 有疑问。

workmanager 的版本是 alpha-06

也许我不明白这个过程,但我希望 OneTimeWorkRequest 只会工作一次,如果这项工作的时间不是很长(不超过 7+- 分钟),它可以正常工作,但如果更多,workmanager 开始同样的工作再次(具有相同的 UUID)并且不停止第一个工作,并且 workmanager 并行执行两个工作

在这里我开始工作

这是我的工作

但我只需要一项工作即可下载这些文件并将其保存到数据库

0 投票
4 回答
13991 浏览

android - Workmanager 中唯一的 OneTimeWorkRequest

我们正在使用 OneTimeWorkRequest 在我们的项目中启动后台任务。

  1. 在应用程序启动时,我们正在启动 OneTimeWorkRequest(比如 req A)
  2. 取决于用户的操作,我们启动相同的工作请求 A。

在某些情况下,如果应用程序在工作请求 A 正在进行时被终止,Android 会在应用程序重新启动时自动重新启动请求 A。我们也再次开始请求 A。所以请求 A 的两个实例并行运行并导致死锁。

为避免这种情况,我在 app start 中执行了以下代码来检查 worker 是否正在运行,但这总是返回 false。

有没有更好的方法来处理这个?

我检查了 beginUniqueWork()。如果我只有一个请求,成本会更高吗?

编辑2: 这个问题是关于独特的一次性任务。为了启动独特的定期任务,我们有一个单独的 API enqueueUniquePeriodicWork()。但是我们没有用于开始独特的一次性工作的 API。我很困惑在延续对象或手动检查和启动方法之间使用。

在最近的构建中,他们的 Android 为这个 enqueueUniqueWork() 添加了新的 api。这就是他们在发行说明中提到的确切原因。

添加 WorkManager.enqueueUniqueWork() API 以将唯一的 OneTimeWorkRequest 排入队列,而无需创建 WorkContinuation。 https://developer.android.com/jetpack/docs/release-notes

0 投票
1 回答
1588 浏览

android - WorkManager 如何用于小部件更新?

Android Oreo (8.0) 使得通过单击按钮 (PendingIntent) 或每 X 分钟自动更新一次来更新小部件 ( 123 ) 变得非常困难。我正在研究如何为此使用新的WorkManager

我能够将 if 用于与小部件无关的另一个任务,并且效果很好。但是,我找不到任何关于如何将它与小部件一起使用以便能够定期更新它们(比如说每 5 分钟)并在单击 RemoteView 时更新它们的任何示例(甚至是快速大纲)。顺便说一句,这需要从 Internet 下载文件并在 RemoteViews 中显示内容。

有没有人尝试过,效果如何?有没有例子?

0 投票
5 回答
5758 浏览

android - Worker 内部的 Synchronous 或 Asynchronous Rxjava(来自 WorkManager 组件)什么是正确的选择?

我是新架构组件 WorkManager 的新手,我通过 Retrofit 和 RxJava 进行 API 调用。

我的用例是从后端获取新帖子,然后显示通知并更新小部件。

所以 Worker 类的 doWork() 方法中的代码可能看起来像这样。

我的问题是在 Worker 类中使用 RxJava 代码的正确方法是什么,因为 doWork() 方法有一个返回值,所以我必须使 Rx 代码同步吗?

如果我使用的是非阻塞 Rx 方法,我该如何返回值(成功 - 失败 - 重试)

0 投票
1 回答
2005 浏览

android-jobscheduler - WorkManager 与 JobScheduler

如果我可以使用WorkManagerJobScheduler,使用 JobScheduler 有什么偏好吗?JobScheduler 中有哪些选项在 WorkManager 中不可用?

JobScheduler 会在未来的 Android 版本中弃用吗?

0 投票
1 回答
923 浏览

dagger - Androidx workmanager 用匕首注入

我正在探索工作经理。

但我尝试用匕首 2.15 注入

我遵循这个准则

但问题是 DispatchingAndroidInjector 没有注入 Application 类。我得到了这种错误。

代码

我没有找到任何解决方案来解决。如果您有其他工作方法,请分享。我坚持这个问题

0 投票
0 回答
883 浏览

android - 使用 workmanager 时 Firestore 脱机持久性错误

当应用程序处于后台和前台时,我使用 aWorkManger定期从我的数据库中检索信息。Firestore此信息用于根据状态更新 UI(因此不同的状态会添加或删除 UI 的不同部分)。在第一次运行时效果很好,但是,一旦应用程序在后台并WorkManager尝试运行,它就会崩溃并出现以下错误:

最初我是这样做的:FirebaseFirestore firestore = FirebaseFirestore.getInstance();在所有活动和片段中,因为错误表明在应用程序类中初始化是一个坏主意。但是,我仍然收到错误,我什至尝试在应用程序类中创建一个初始化实例,如下所示:

WorkManager但是每当运行时我仍然会看到这个错误。我已经尝试了这个问题的解决方案,因为它有点相似,但它没有解决错误。我还在某个地方看到不能在单独的线程上调用 firestore,否则我可能弄错了。

我相当确定这与我如何初始化和访问 firestore 实例有关,但我不确定如何修复它。我尝试在使用它的每个活动、片段和服务中使用单独的初始化,但没有运气。

编辑

工人阶级:

MainActivity onCreate:

我使用 Android Studio Assistant 工具集成了 firebase。上面的工人类查询一个theme节点并检查当前可用的主题并更新房间数据库。