【发布时间】:2019-04-27 02:26:59
【问题描述】:
我已经使用android-priority-job-queue V2 2 年了(很棒的图书馆)。 Android Workmanager 刚刚出现。我喜欢它的地方在于它非常易于设置,您不必与JobScheduler、Firebase、JobDispatcher 或AlarmManager 争吵,它为我们完成了。对于android-priority-job-queue V2,我必须手动设置FrameworkJobSchedulerService/GcmJobSchedulerService。
Workmanager 是否可以添加某个 http url 作为约束?有时,您想将一些数据发送到受保护的 wifi 中的服务器,并且您远离地理区域。当您位于服务器的地理区域并且您的设备连接到 wifi 时,您拍摄一张照片(例如)您必须稍后保存在该服务器上。 url 约束将确保如果 url 不可访问,则永远不会执行或刷新工作请求(设置为失败)。当 url 约束符合连接性时,执行工作请求。
使用android-priority-job-queue V2,我必须实现一个逻辑,检查android-priority-job-queue V2 的shouldReRunOnThrowable(Throwable throwable, int runCount,int maxRunCount) 何时抛出http 异常并使用Room Persistence Library 保存未发送的数据。后来,每次我通过BroadCastReceiver 检测到连接更改状态时,我都会尝试重新发送未发送的数据并标记那些最终发送的数据(那些在android-priority-job-queue V2 中完成onRun() 的数据)。稍后我将通过定期例程从数据库中刷新所有发送的数据。此解决方案有效。但是假设我想发送不同类型的数据(图片、位置等),我必须为每种不同类型的 Job 重写相同的例程。
我不知道如何对WorkManager 做同样的事情。
有人可以帮我指出如果实施此功能可能会错过的文档部分吗?或者至少是一种使用WorkManager 实现它的方法。
P.S:WhisperSystems' JobManager,允许我添加自定义网址。然而问题是它的持久性在某些设备(某些三星型号)上不起作用。当我使应用程序崩溃时,数据从未恢复。我继续github for help,无济于事。我没有指责任何人,我只是想表明我一直在为此寻找解决方案。
【问题讨论】:
标签: android android-workmanager