feat: add HeartbeatScheduler with WorkManager
This commit is contained in:
parent
c035181d8d
commit
5cdbb2be08
1 changed files with 53 additions and 0 deletions
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.traccar.traccar_client.location
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import androidx.work.Constraints
|
||||||
|
import androidx.work.ExistingPeriodicWorkPolicy
|
||||||
|
import androidx.work.NetworkType
|
||||||
|
import androidx.work.PeriodicWorkRequestBuilder
|
||||||
|
import androidx.work.WorkManager
|
||||||
|
import androidx.work.Worker
|
||||||
|
import androidx.work.WorkerParameters
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
class HeartbeatScheduler(private val context: Context) {
|
||||||
|
|
||||||
|
private val workManager = WorkManager.getInstance(context)
|
||||||
|
|
||||||
|
fun scheduleHeartbeat(intervalSeconds: Long, onHeartbeat: () -> Unit) {
|
||||||
|
val constraints = Constraints.Builder()
|
||||||
|
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
val heartbeatRequest = PeriodicWorkRequestBuilder<HeartbeatWorker>(
|
||||||
|
intervalSeconds, TimeUnit.SECONDS
|
||||||
|
)
|
||||||
|
.setConstraints(constraints)
|
||||||
|
.addTag(HEARTBEAT_WORK_TAG)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
workManager.enqueueUniquePeriodicWork(
|
||||||
|
HEARTBEAT_WORK_NAME,
|
||||||
|
ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE,
|
||||||
|
heartbeatRequest
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun cancelHeartbeat() {
|
||||||
|
workManager.cancelUniqueWork(HEARTBEAT_WORK_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
|
class HeartbeatWorker(
|
||||||
|
context: Context,
|
||||||
|
params: WorkerParameters
|
||||||
|
) : Worker(context, params) {
|
||||||
|
override fun doWork(): Result {
|
||||||
|
return Result.success()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val HEARTBEAT_WORK_TAG = "traccar_heartbeat"
|
||||||
|
const val HEARTBEAT_WORK_NAME = "traccar_heartbeat_work"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue