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

android - 应用程序因 WorkManager 崩溃

所以最近我正在尝试测试 WorkManager 并且我遇到了一个我不知道如何解决它的错误......

我遇到的错误是这个:

我检查了可能出现此错误的位置,似乎当我对该代码添加注释时:

我的应用程序运行良好......我不知道问题是来自WorkManager还是我所做的实现......

这是我的项目的信息:

minSDKversion : 14

targetSDKversion : 28

我的gradle.build

有人帮我吗?谢谢你 :)

PS:这是来自的代码NoNetworkWorker

0 投票
4 回答
5817 浏览

android - 如何从 Worker 类中获取 ViewModel?

  1. 我的应用程序中有一个Activivity名为 MainActivity。
  2. MainActivity 与ViewModelOnCreate 方法中的a 相关联

    /li>
  3. 我做了一些背景工作Workers

    val someWork = OneTimeWorkRequestBuilder<LoginWorker>().build() WorkManager.getInstance().beginUniqueWork("SOMEWORK", ExistingWorkPolicy.REPLACE, captivePortalWork).enqueue()

  4. 问题来了...worker例如循环10次,每次只睡一秒钟...所以我们有10秒的后台工作。我想更新ViewModel以显示后台工作的进度并每次更新 UI。

    A)我可以从 MainActivity 访问 View 模型并观察worker但是我只能更新ViewModel进度成功或失败的时间......这意味着我可以在工作完成 0 或 100% 时显示进度。

    B) 如果我可以从 Worker 类访问 ViewModel,我可以随时更新 ViewModel。但我不知道如何......这种方法在 Worker 类中不起作用。

    val someWork = ViewModelProviders.of(this).get(SomeViewModel::class.java)

    我怎样才能ViewModelWorker课堂上得到一个?

0 投票
1 回答
896 浏览

android - 访问存储数据时房间崩溃

我使用工作管理器将数据保存到本地数据库,然后将相同的数据放入服务器。

在 localDeleteRequest 类中,我将 id 作为 WorkData 传递并使用该 id 来获取存储在本地数据库中的对象

工作管理器功能:

查看模型类:

DeleteUser 本地函数:

删除用户服务器:

我面临以下问题:

0 投票
1 回答
100 浏览

android - 在后台工作有哪些限制?

据我所知,Android 允许每 15 分钟定期启动一次服务,并且在打盹模式下在后台工作的最长时间是 10 分钟,但我认为下面的代码避免了这个限制。我对吗?

0 投票
0 回答
576 浏览

android - WorkManager beginUniqueWork 队列在第一次工作后没有被调用

我正在使用 WorkManager 1.0.0-alpha02

我创建了我的工人阶级,如:

然后在我的视图模型中,我安排了工作链,例如:

最后在另一段代码中我正在观察它: viewmodel.printStatus.observe(this, Observer { works ->

第一项工作在入队后立即完成并返回 Worker.WorkerResult.SUCCESS 但链的其余部分不会被调用

0 投票
1 回答
6601 浏览

android - 避免从 WorkManager 复制 PeriodicWorkRequest

在应用程序启动时,我想启动将永远工作的服务,但是当用户再次打开应用程序时,它会重复。

0 投票
2 回答
2616 浏览

android - 用于精确时间执行的 WorkManager API

我想在准确的时间定期向用户发送离线通知(假设每天上午 9:00)。现在我正在尝试workmanager Api,但找不到像AlarmsManager的setExact或setexactandallowwhileidle这样的方法。

在我的情况下,只有 repeatInterval 选项将是 24(每天),但如何在准确时间(9 : 00 am)发送通知。

0 投票
0 回答
2209 浏览

android - 从 androidx.work.Worker 将数据保存到 Room 失败

我尝试将数据从 Worker 保存到 Room 数据库。

版本:

  • 工作运行时 Ktx - android.arch.work:work-runtime-ktx:1.0.0-alpha02
  • 房间 - android.arch.persistence.room:runtime:1.1.0 和 android.arch.persistence.room:compiler:1.1.0

MainActivity.kt

DWElementsWork.kt

应用数据库.kt

主要问题在于尝试调用elementDao?.insertElements(elements!!)它时会出现以下错误:

堆栈跟踪

我在插入元素之前停止了调试器并AppDatabase.getInstance(applicationContext).isOpen返回false

难道我做错了什么?

是否可以将数据从工人保存到房间?

也许applicationContext (getApplicationContext()) 没有提供适当的上下文并且 AppDatabase 实例化很糟糕?

提前致谢!

0 投票
1 回答
1435 浏览

android - WorkManager - PeriodicWorkRequest 在 android api 21 上不起作用

我正在尝试使用 PeriodicWorkRequest 安排定期检查。它在 android API 23 及更高版本上运行良好,但不适用于 android API 21。在 API 21 上它只能运行一次。

这是 PeriodicWorkRequest worker = new PeriodicWorkRequest.Builder(TestWorker.class, MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS).setConstraints(Constraints.NONE).addTag(TAG_PERIODIC_WORK_REQUEST).build(); WorkManager.getInstance().enqueue(worker); 用最新的alpha03alpha02测试的示例代码 我做错了什么?或者它可能是一个错误?

0 投票
1 回答
304 浏览

android - 将 WorkManager 从 1.0.0-alpha02 升级到 1.0.0-alpha03 时出现运行时异常

当我WorkManager从 1.0.0-alpha02 升级到 1.0.0-alpha03 时。

旧版本.gradle

新建 build.gradle


我注意到我需要进行以下更改

1.0.0-alpha02

1.0.0-alpha03


不过,这不是主要问题。但是,如果我们倾向于升级以前已经运行 using 的应用程序,1.0.0-alpha02我们将得到以下运行时异常

我可以知道有哪些解决方法,以避免这种运行时异常?