我想使用协程流作为当前手机位置的来源并将其标记在 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 选项打开,事件就会接收数据。关闭后,流将关闭,并且事件不会对禁用或启用 GPS 选项使用react。
当我使用gpsAwareLocationFlow.asLiveData()
时,事件仅在第一次更改 GPS 选项后才能正确 react 。在更改选项之前,它不会执行任何操作。
第一个想法是在两个流程上使用combine
。事实证明,只要两者各自工作良好(至少作为流程),将它们组合后,结果流程不会收到任何通知。
val resultFlow = locationFlow.combine(gpsAwareLocationFlow){ a, b-> }
有人知道我做错了什么吗?
最佳答案
我认为问题是 combineLatest
函数不会发出任何东西,直到两个流源都没有发出至少一个值。解决这个问题的好方法是用一个值初始化两个流,但我不知道您是否可以在代码中执行此操作。
关于kotlin - 位置流向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991185/