簡體   English   中英

Android 在定義的時間間隔內安排作業

[英]Android schedule job on interval for defined amount of time

我想知道 Android SDK 中的一些調度庫是否有可能實現這種行為:

  • 安排一些工作(例如 ping 網絡)
  • 每 X 秒執行一次
  • 執行持續 Y 分鍾

有一些像 ScheduledThreadPoolExecutor 和一些自定義解決方案之類的東西,但是我如何使用官方批准的庫來實現這一點? 謝謝。

工作管理器是作業調度的最佳選擇。

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM