Check if location tracking is started before starting it

This commit is contained in:
Maxime NATUREL 2023-02-17 17:02:05 +01:00
parent 25ca598414
commit df2c3e7c07
1 changed files with 40 additions and 32 deletions

View File

@ -66,6 +66,8 @@ class LocationTracker @Inject constructor(
@VisibleForTesting
var hasLocationFromGPSProvider = false
private var isStarted = false
private var isStarting = false
private var firstLocationHandled = false
private val _locations = MutableSharedFlow<Location>(replay = 1)
@ -90,7 +92,8 @@ class LocationTracker @Inject constructor(
@RequiresPermission(anyOf = [Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION])
fun start() {
// TODO start only if not already started
if(!isStarting && !isStarted) {
isStarting = true
Timber.d("start()")
if (locationManager == null) {
@ -129,6 +132,9 @@ class LocationTracker @Inject constructor(
notifyLocation(latestKnownLocation)
}
}
isStarted = true
isStarting = false
}
}
/**
@ -149,6 +155,8 @@ class LocationTracker @Inject constructor(
callbacks.clear()
hasLocationFromGPSProvider = false
hasLocationFromFusedProvider = false
isStarting = false
isStarted = false
}
/**