Я использую FusedLocationClient, который помещен в LocationProvider
class LocationProvider @Inject constructor(val fusedLocationClient: FusedLocationProviderClient) {
private lateinit var locationRequest: LocationRequest
lateinit var locationCallback: LocationCallback
var coord: Coord? = null
fun getLocation(): Coord?{
locationRequest = LocationRequest()
locationRequest.interval = 10000
locationRequest.fastestInterval = 5000
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
if (locationResult == null) {
return
}
for (location in locationResult.locations) {
location?.run {
fusedLocationClient.removeLocationUpdates(locationCallback)
coord = Coord(lat = latitude, lon = longitude)
}
}
}
}
return coord
}
}, и у меня есть репозиторий
class Repository(private val locationProvider: LocationProvider) {
fun getCoords(): Coord?{
return locationProvider.getLocation()
}
}
Проблема в том, что я не могу получить местоположение из хранилища напрямую. Вместо этого хранилище должно быть подписано на LocationCallback в LocationProvider, а хранилище должно знать о Presenter. Так что это приводит к круговым зависимостям. Кто-нибудь решал эту проблему?