From bdbdfe52cdbd3f2a1e8560b1ce5ee7d54ae41b29 Mon Sep 17 00:00:00 2001 From: Onuray Sahin Date: Fri, 25 Mar 2022 14:24:42 +0300 Subject: [PATCH] Cancel timers when service is destroyed. --- .../location/LocationSharingService.kt | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt index b11ddf93e2..a2a68e4188 100644 --- a/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt +++ b/vector/src/main/java/im/vector/app/features/location/LocationSharingService.kt @@ -42,6 +42,7 @@ class LocationSharingService : VectorService(), LocationTracker.Callback { @Inject lateinit var locationTracker: LocationTracker private var roomArgsList = mutableListOf() + private var timers = mutableListOf() override fun onCreate() { super.onCreate() @@ -72,11 +73,18 @@ class LocationSharingService : VectorService(), LocationTracker.Callback { } private fun scheduleTimer(roomId: String, durationMillis: Long) { - Timer().schedule(object : TimerTask() { - override fun run() { - stopSharingLocation(roomId) - } - }, durationMillis) + Timer() + .apply { + schedule(object : TimerTask() { + override fun run() { + stopSharingLocation(roomId) + timers.remove(this@apply) + } + }, durationMillis) + } + .also { + timers.add(it) + } } private fun stopSharingLocation(roomId: String) { @@ -101,6 +109,8 @@ class LocationSharingService : VectorService(), LocationTracker.Callback { private fun destroyMe() { locationTracker.removeCallback(this) + timers.forEach { it.cancel() } + timers.clear() stopSelf() }