微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Java 收集的 SharedFlow 不起作用

如何解决从 Java 收集的 SharedFlow 不起作用

我有一小组活动需要在后台生成的某些事件上重新启动。 由于这将是一个短期的解决方法,我认为侵入性最小的方法是在存储库中有一个共享流,从 UI 一直观察到,但由于某种原因它不起作用:我可以看到价值发出,但 UI 不会对其做出反应。

我当前的代码

// Repository
val myEventFlow = MutableSharedFlow<Unit>(replay = 0)
 
// Use Case to emit the event (dummy impl,just to test the mechanism is working)
operator fun invoke() = runBlocking {
    myExistingRepository.myEventFlow.emit(Unit)
}
 
// Use Case class to fetch the flow
operator fun invoke() = myExistingRepository.myEventFlow.asSharedFlow()
 
// View Model (in Java,can't convert it)
public LiveData<Unit> myEvent() {
  return FlowLiveDataConversions.asLiveData(getMyEventUseCase.invoke());
}
 
// Activity (also in Java)
viewmodel.myEvent().observe(this,event -> activityHelper.startWithClearStack(getClass()));
 
// Activity Helper (dummy impl just to see the event being reacted to)
fun startWithClearStack(activity: Class<out Activity>) {
    Timber.d("DEBUG: restarting class $activity")
}

我可以确认事件已发出(在调试中,包含 emit() 的行被执行)但随后活动中的观察者从未被激活。 知道为什么吗?

提前致谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。