Kotlin WorkManager: планирование периодического вызова POST API каждые 15 минут с сохранением при перезагрузкахAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Kotlin WorkManager: планирование периодического вызова POST API каждые 15 минут с сохранением при перезагрузках

Сообщение Anonymous »

Я пытаюсь использовать WorkManager Kotlin, чтобы запланировать вызов POST API, который запускается каждые 15 минут и продолжает выполняться даже после перезапуска или перезагрузки устройства. Вот к чему я стремлюсь:
Задача должна выполнить вызов POST API с полезной нагрузкой JSON.
Она должна выполняться каждые 15 минут.
Задача должна сохраняться после перезагрузки устройства, чтобы она продолжалась без какого-либо взаимодействия с пользователем или перезапуска приложения.

Код: Выделить всё

class ApiWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
return try {
val client = OkHttpClient()
val jsonObject = JSONObject().apply {
put("key1", "value1")
put("key2", "value2")
}
val requestBody = RequestBody.create(
"application/json".toMediaTypeOrNull(),
jsonObject.toString()
)

val request = Request.Builder()
.url("https://yourapiendpoint.com/yourpostendpoint")
.post(requestBody)
.build()

val response = client.newCall(request).execute()
if (response.isSuccessful) {
Result.success()
} else {
Result.retry()
}
} catch (e: Exception) {
Result.retry()
}
}
}

fun scheduleApiWorker(context: Context) {
val workRequest = PeriodicWorkRequestBuilder(15, TimeUnit.MINUTES)
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresBatteryNotLow(true)
.build()
)
.build()

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"ApiWorker",
ExistingPeriodicWorkPolicy.KEEP,
workRequest
)
}
Правильно ли это настроить периодическую задачу WorkManager, которая будет запускаться каждые 15 минут даже после перезагрузки системы?

Подробнее здесь: https://stackoverflow.com/questions/791 ... es-with-pe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»