我想使用协程流作为当前电话位置的来源并将其标记在 map 上。这是我ViewModel
中的内容:
private val gpsAwareLocationFlow = broadcastFlow(BroadcastTransformers.gpsReceiver)
.flatMapConcat { locationNotifier.locationFlow() }
private val locationFlow = locationNotifier.locationFlow()
val currentPosition = //here is place for solution, I suppose
.asLiveData()
当我使用
locationFlow.asLiveData
时,只要GPS选项启用, Activity 就会接收数据。关闭时,流关闭,并且 Activity 对禁用或启用GPS选项无反应。当我使用
gpsAwareLocationFlow.asLiveData()
时,只有在第一次更改GPS选项后, Activity 才能正常反应。在更改选项之前,它不会执行任何操作。第一个想法是在两个流上都使用
combine
。事实证明,只要两者都可以很好地工作(至少作为流),将它们组合后,结果流就不会收到任何通知。 val resultFlow = locationFlow.combine(gpsAwareLocationFlow){ a, b-> }
有人知道我在做什么错吗?
最佳答案
我想问题在于,直到两个流源都没有发出至少一个值时,combineLatest
函数才发出任何东西。解决此问题的一种好方法是用一个值初始化两个流,但是我不知道您是否可以在代码中执行此操作。