Потоки Kotlin, выполняющие код, когда нет активных подписчиков

#android #kotlin-flow

Вопрос:

Я создал репозиторий местоположения, который отвечает за сбор данных о местоположении и передачу их тем, кто слушает, код сейчас выглядит примерно так:

 @Singleton class LocationRepository @Inject constructor(  app: Application ) {   private val _location = MutableStateFlow<Location?>(null)  private val subscribers = AtomicInteger()  val location: Flow<Location?> = _location.onSubscription {  if (subscribers.getAndIncrement() == 0)  startUpdates()  }.onCompletion {  if (subscribers.decrementAndGet() == 0)  stopUpdates()  }   private val client = LocationServices.getFusedLocationProviderClient(app)  private val locCb = object : LocationCallback() {  override fun onLocationResult(var1: LocationResult?) {  newLocationResult(var1)  }  override fun onLocationAvailability(var1: LocationAvailability) {}  }  private val request = LocationRequest.create()   init {  request.priority = LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY  request.interval = 5000L  request.fastestInterval = 2500L  }    private fun startUpdates() { //code to start getting location updates }  private fun stopUpdates() { //code to stop getting location updates }  }  

прямо сейчас я обрабатываю текущее количество подписчиков с AtomicInteger помощью , есть ли способ запустить startUpdates код и stopUpdates код автоматически, когда первый подписчик подписывается, а последний подписчик отписывается?