【问题标题】:Android schedule job on interval for defined amount of timeAndroid 在定义的时间间隔内安排作业
【发布时间】:2021-07-04 05:49:40
【问题描述】:

我想知道 Android SDK 中的某些调度库是否有可能实现这种行为:

  • 安排一些工作(例如 ping 网络)
  • 每 X 秒执行一次
  • 执行持续 Y 分钟

有一些类似 ScheduledThreadPoolExecutor 和一些自定义解决方案的东西,但是我如何使用官方批准的库来实现这一点?谢谢。

【问题讨论】:

    标签: android kotlin scheduled-tasks


    【解决方案1】:

    Work Manager 是作业调度的最佳选择。

    1. 一次性请求。
    val workManager = WorkManager.getInstance(context)
    val oneTimeRequest = OneTimeWorkRequest.Builder(BackupFileUploadWorker::class.java)
                    .setConstraints(constraints)
                    .build() 
    workManager.enqueueUniqueWork(BackupFileUploadWorker::class.java.simpleName, ExistingWorkPolicy.REPLACE, oneTimeRequest)
    
    1. 定期请求。
    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)官方文档

    【讨论】:

      猜你喜欢
      • 2015-06-22
      • 2013-09-08
      • 2019-10-01
      • 2015-06-23
      • 1970-01-01
      • 2016-08-06
      • 2015-05-27
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多