Я использую WorkManager следующим образом -
class LocationWorker(
ctx: Context, params: WorkerParameters
) : CoroutineWorker(ctx, params), KoinComponent {
private val locationDataRepository: LocationDataRepository by inject()
override suspend fun doWork(): Result {
return try {
locationDataRepository.triggerLocationUpdates()
Result.success()
} catch (e: Exception) {
Result.failure()
}
}
}
Я активирую Рабочего как -
val myWorker =
PeriodicWorkRequestBuilder<LocationWorker>(
15,
TimeUnit.MINUTES
).addTag(
"location"
).build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"location",
ExistingPeriodicWorkPolicy.KEEP,
myWorker
)
Как видите, минимальный период WorkManager составляет 15 минут. Я хочу отслеживать местоположение с очень короткими интервалами, например, каждые несколько секунд, а также хочу, чтобы местоположение отслеживалось, даже когда экран телефона выключен. Подходит ли WorkManager для моих требований или вы можете предложить мне другой API?