android工作进度,android – 显示运行WorkManager工作程序的详细进度

本文探讨了如何用JetPack WorkManager替换现有的数据同步系统,利用其新特性如工作链接。虽然当前系统使用LiveData传递作业进度,但WorkManager的getStatusById和getStatusesByTag方法只提供作业级别的状态。作者询问如何最佳地向用户界面报告中间进度。建议是通过将进度写入自定义数据存储并公开相关的LiveData。未来WorkManager可能添加此功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想用新的JetPack WorkManager(链接到codelabs)组件(在应用程序的沙箱分支中)替换现有数据同步系统的作业调度方面.我现有的系统运行良好,但WorkManager中的一些新功能会派上用场(例如链接).

我当前的系统使用共享的LiveData将正在进行的作业的进度传达给观察它的任何UI元素(在我的情况下为RecyclerView)(我实际上是将ViewModel中的SwitchMapping转换为SyncItems列表)

data class SyncItem(

val title: String,

private var _progress: Int,

var total: Int) : BaseObservable() {

var progress: Int

@Bindable get() = _progress

set(value) {

_progress = value

notifyPropertyChanged(BR.progress)

}

}

新的WorkManager组件有几个方法(getStatusById,getStatusesByTag等),可用于检索具有一个或多个WorkStatuses的LiveData,但这些方法仅报告课程粒度状态(运行,成功,失败,取消).

推荐进展的方式是什么(例如’546/1234项下载’)到用户界面? setOutputData / getOutputData对似乎更多地用于工作(链接时我需要)与UI之间的通信.

附件是当用户打开同步状态页面时(在2个项目已完成,正在进行中),它​​的外观截图(使用我的旧方法在我的应用程序的[测试]版本中).

551496cb22344dd2e55f839f4aff1f84.png

在最终产品中,用户将能够取消正在进行的任何作业并重新发出一次性工作请求.通常,PeriodicWorkRequest将触发作业.

解决方法:

最好的方法是将中间进度写入您自己的数据存储并公开LiveData<>.我们正在考虑在未来的alpha中添加此功能.

标签:android,android-workmanager,jetpack

来源: https://codeday.me/bug/20190727/1549759.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值