一些片段观察者从后台堆栈弹出后触发,尽管数据未更改

问题描述 投票:0回答:1

我在Kotlin的嵌套片段中遇到了一些问题。我有ViewModel嵌套的片段。从后退按钮恢复片段后,虽然我的数据没有更改,但再次按下viewModel上的所有观察者LiveData触发器。]

首先,我用谷歌搜索并尝试在字段变量中定义观察者,并检查它是否已初始化,然后不再观察它:lateinit var观察者:观察者

fun method(){
        if (::observer.isInitialized) return
        observer = Observer{ ... }
        viewModel.x_live_data.observe(viewLifecycleOwner ,observer)
}

因此,首先进入片段时它可以正常工作,而且恢复后它不会在没有数据更改的情况下再次触发,但是在数据更改时也不会触发!这是怎么回事?

我在Kotlin的嵌套片段中遇到了一些问题。我有ViewModel嵌套的片段。从后退按钮恢复片段后,尽管我的...

android mvvm android-lifecycle android-livedata observers
1个回答
0
投票

因此,根据Uncle Bob,作为关注点分离的一部分,来自View的事件应移至其他处理程序。在Android中,我们可以将View的第一个联系点视为ViewModel。然后从那里到UseCase,Repo等。

下面是片段类。我正在使用DispatcherSupervisor Job处理VM中的任务,该VM通过REST API与其他层通过Coroutines连接。不知道这种流程是否会对您有所帮助,但还是请看一看。

© www.soinside.com 2019 - 2024. All rights reserved.