Android 在定义的时间间隔内安排作业
Android schedule job on interval for defined amount of time
我想知道 Android SDK 中的某些调度库是否有可能实现此类行为:
- 安排一些工作(例如 ping 网络)
- 每X秒执行一次
- 执行持续 Y 分钟
有一些类似 ScheduledThreadPoolExecutor 和一些自定义解决方案的东西,但我如何使用官方批准的库实现这些?谢谢
工作管理器是作业安排的最佳选择。
- 一次性请求。
val workManager = WorkManager.getInstance(context)
val oneTimeRequest = OneTimeWorkRequest.Builder(BackupFileUploadWorker::class.java)
.setConstraints(constraints)
.build()
workManager.enqueueUniqueWork(BackupFileUploadWorker::class.java.simpleName, ExistingWorkPolicy.REPLACE, oneTimeRequest)
- 定期请求。
var builder : PeriodicWorkRequest.Builder? = null
var periodicWorkRequest : PeriodicWorkRequest? = null
when(backupSettings.backupDuration){
context.getString(R.string.backup_type_duration_never) -> {
return
}
context.getString(R.string.backup_type_duration_daily) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 1, TimeUnit.DAYS)
}
context.getString(R.string.backup_type_duration_weekly) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 7, TimeUnit.DAYS)
}
context.getString(R.string.backup_type_duration_monthly) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 30, TimeUnit.DAYS)
}
}
periodicWorkRequest = builder?.build()
workManager.enqueueUniquePeriodicWork(BackupFileUploadWorker::class.java.simpleName, ExistingPeriodicWorkPolicy.REPLACE, periodicWorkRequest!!)
更多详情请参考本[工作经理]的官方文档(https://developer.android.com/topic/libraries/architecture/workmanager)
我想知道 Android SDK 中的某些调度库是否有可能实现此类行为:
- 安排一些工作(例如 ping 网络)
- 每X秒执行一次
- 执行持续 Y 分钟
有一些类似 ScheduledThreadPoolExecutor 和一些自定义解决方案的东西,但我如何使用官方批准的库实现这些?谢谢
工作管理器是作业安排的最佳选择。
- 一次性请求。
val workManager = WorkManager.getInstance(context)
val oneTimeRequest = OneTimeWorkRequest.Builder(BackupFileUploadWorker::class.java)
.setConstraints(constraints)
.build()
workManager.enqueueUniqueWork(BackupFileUploadWorker::class.java.simpleName, ExistingWorkPolicy.REPLACE, oneTimeRequest)
- 定期请求。
var builder : PeriodicWorkRequest.Builder? = null
var periodicWorkRequest : PeriodicWorkRequest? = null
when(backupSettings.backupDuration){
context.getString(R.string.backup_type_duration_never) -> {
return
}
context.getString(R.string.backup_type_duration_daily) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 1, TimeUnit.DAYS)
}
context.getString(R.string.backup_type_duration_weekly) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 7, TimeUnit.DAYS)
}
context.getString(R.string.backup_type_duration_monthly) -> {
builder = PeriodicWorkRequest.Builder(BackupFileUploadWorker::class.java, 30, TimeUnit.DAYS)
}
}
periodicWorkRequest = builder?.build()
workManager.enqueueUniquePeriodicWork(BackupFileUploadWorker::class.java.simpleName, ExistingPeriodicWorkPolicy.REPLACE, periodicWorkRequest!!)
更多详情请参考本[工作经理]的官方文档(https://developer.android.com/topic/libraries/architecture/workmanager)