#android #kotlin #scheduled-tasks #schedule
#Android #kotlin #запланированные задачи #Расписание
Вопрос:
Какой безопасный и более эффективный способ выполнения задач (в моем случае вызова функции) в определенное время (в моем случае каждые два дня)?
Функция извлекает данные из Интернета. Моя цель — обновлять данные в приложении всякий раз, когда они меняются на веб-сервере.
Спасибо, хорошая работа!
Комментарии:
Ответ №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 ()