fix: invoke heartbeat callback in HeartbeatWorker.doWork()
The onHeartbeat callback passed to scheduleHeartbeat() was never invoked because HeartbeatWorker.doWork() returned success without calling it. Fix: Store callback in companion object and invoke it when worker runs.
This commit is contained in:
parent
5cdbb2be08
commit
8ba3a017cd
1 changed files with 3 additions and 0 deletions
|
|
@ -15,6 +15,7 @@ class HeartbeatScheduler(private val context: Context) {
|
||||||
private val workManager = WorkManager.getInstance(context)
|
private val workManager = WorkManager.getInstance(context)
|
||||||
|
|
||||||
fun scheduleHeartbeat(intervalSeconds: Long, onHeartbeat: () -> Unit) {
|
fun scheduleHeartbeat(intervalSeconds: Long, onHeartbeat: () -> Unit) {
|
||||||
|
onHeartbeatCallback = onHeartbeat
|
||||||
val constraints = Constraints.Builder()
|
val constraints = Constraints.Builder()
|
||||||
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
|
.setRequiredNetworkType(NetworkType.NOT_REQUIRED)
|
||||||
.build()
|
.build()
|
||||||
|
|
@ -42,11 +43,13 @@ class HeartbeatScheduler(private val context: Context) {
|
||||||
params: WorkerParameters
|
params: WorkerParameters
|
||||||
) : Worker(context, params) {
|
) : Worker(context, params) {
|
||||||
override fun doWork(): Result {
|
override fun doWork(): Result {
|
||||||
|
onHeartbeatCallback?.invoke()
|
||||||
return Result.success()
|
return Result.success()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
var onHeartbeatCallback: (() -> Unit)? = null
|
||||||
const val HEARTBEAT_WORK_TAG = "traccar_heartbeat"
|
const val HEARTBEAT_WORK_TAG = "traccar_heartbeat"
|
||||||
const val HEARTBEAT_WORK_NAME = "traccar_heartbeat_work"
|
const val HEARTBEAT_WORK_NAME = "traccar_heartbeat_work"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue