我希望使用新的JetPack WorkManager(链接到codelabs)组件替换现有数据同步系统中的作业调度方面(位于应用程序的沙箱分支中)。我的现有系统运行良好,但是
我的当前系统使用共享的
新的
推荐的通信进度的方式是什么(例如“已下载546/1234项”)?
附上屏幕截图,显示了用户打开同步状态页面时的情况(2项已完成,其余正在进行中)。 在最终产品中,用户将能够取消任何正在进行的作业并重新发出一次性工作请求。通常情况下,这些作业将由
WorkManager
中的一些新功能将会很有用(例如链接)。我的当前系统使用共享的
LiveData
将正在进行中的作业的进度通信到任何UI元素(在我的情况下为RecyclerView
)上观察它(实际上我正在ViewModel
中进行SwitchMapping,转换成SyncItem
列表)。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
等)可用于检索带有一个或多个WorkStatus
的LiveData,但这些只报告一种粗略状态(正在运行、成功、失败、取消)。推荐的通信进度的方式是什么(例如“已下载546/1234项”)?
setOutputData
/getOutputData
配对似乎更多用于Worker
之间的通信(当我需要链接时),而不是与UI交互。附上屏幕截图,显示了用户打开同步状态页面时的情况(2项已完成,其余正在进行中)。 在最终产品中,用户将能够取消任何正在进行的作业并重新发出一次性工作请求。通常情况下,这些作业将由
PeriodicWorkRequest
触发。