Как я могу загружать файлы в определенные дни? [Разработка Kotlin для Android]

#android #kotlin #scheduled-tasks #schedule

#Android #kotlin #запланированные задачи #Расписание

Вопрос:

Какой безопасный и более эффективный способ выполнения задач (в моем случае вызова функции) в определенное время (в моем случае каждые два дня)?

Функция извлекает данные из Интернета. Моя цель — обновлять данные в приложении всякий раз, когда они меняются на веб-сервере.

Спасибо, хорошая работа!

Комментарии:

1. developer.android.com/reference/android/app/AlarmManager

Ответ №1:

1- Если вам не нужно указывать точное время, вам нужно использовать WorkManager и задать периодический запрос на работу

https://developer.android.com/topic/libraries/architecture/workmanager

 fun CreateWorkRequest()
{
  val workManager = WorkManager.getInstance(context)

val duration = 2*24*60*60*1000L //2 days in mili second

        val workRequest = PeriodicWorkRequestBuilder<AutoBackUpWorker>(duration, TimeUnit.MILLISECONDS)
            .setInitialDelay(duration/2, TimeUnit.MILLISECONDS)
                .addTag("diaryBackUpWork")
                .build()

        workManager.enqueueUniquePeriodicWork("backupwork", ExistingPeriodicWorkPolicy.REPLACE, autoBackUpRequest)
}
  

Рабочий класс:

     class RequestedWorker(val appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams)
    
{
    override fun doWork()
    {
    
    }
}
  

2. Если вам нужно точно определить время (например, в 8 вечера каждый день), вам нужно использовать Alarm Manager

3- В вашем случае лучшим выбором является реализация DownloadManager для запроса на загрузку в методе DoWork ()