android - Android:在特定日期或日期重复的定期工作管理器
问题描述
我想构建一个在特定时间向用户发送通知的工作管理器。重复标准如下:
- 每周星期二 14:30 通知
- 每月 15 号通知,重复次数仅为 6 次
我怎样才能做到这一点?
解决方案
无法设置准确的时间,因此不可能进行定期工作。您必须每次重新计算:
通过使用“ setInitialDelay ”来做这样的事情:
fun setupWork(){
if (isCountLimitReached()) {
return
}
val workRequest: WorkRequest =
OneTimeWorkRequestBuilder<MyWork>()
.setInitialDelay(getNextInterval(),TimeUnit.MILLISECONDS)
.build()
updateCount()
WorkManager
.getInstance(context)
// Make sure you have only one work like that.
.enqueueUniqueWork(
"MY_WORK_UNIQUE_NAME",
// If there is existing work like this - replace it.
ExistingWorkPolicy.REPLACE,
workRequest
)
}
fun getNextInterval(): Long {
TODO("Get milliseconds from 'execution date' and subtract 'now'")
}
private fun updateCount(){
TODO("Use SharedPreferences or something like this")
}
private fun isCountLimitReached(): Boolean {
TODO("Use SharedPreferences or something like this")
}
推荐阅读
- javascript - 为什么 requestHeaders 未定义?
- go - 如何通过 go 的 dep 编译 vegeta?
- python-3.x - 行为找不到步骤文件
- python - 删除二维数组中无序重复项最省时的方法是什么?
- ruby-on-rails - 为什么我被禁止使用 Shopify API Ruby Gem 创建结账
- vue.js - 在 Vue.js 中创建动态行列表格网格
- vue.js - 使用 VueJS 上传护理。jQuery Exception onSuccess 从今天早上开始
- android - Android:使用警报管理器更新小部件
- matlab - matlab如何把方波信号变成三角波
- swift - 如何根据 Mac OS 中的窗口大小隐藏子 NSView?