Задача должна выполнить вызов 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
)
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... es-with-pe
Мобильная версия