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() }