我有一个ViewModel,如下所示,它同时具有LiveData和Compose状态
@Suppress("UNCHECKED_CAST")
class SafeMutableLiveData<T: Any>(value: T) : LiveData<T>(value) {
override fun getValue(): T = super.getValue() as T
public override fun setValue(value: T) = super.setValue(value)
public override
简而言之:当Observe处于活动状态时,当我进行通知时,它可以正常工作,但当我返回到前一个片段(我使用导航组件)并再次导航到当前片段时,就会创建一个片段,并且出于某种原因,会调用Observe。 为什么返回时没有删除观察点?它应该根据片段的生命周期运行。我尝试在onStop上删除,但观察者仍然调用。 更多细节:我的每个项目片段都分为3个部分:模型、viewModel、视图在视图部分,我首先设置了viewModel。 class EmergencyFragment : Fragment() {
override fun onCreate(savedInstanceState: Bun
我有一个名为ViewModel的SharedViewModel:
public class SharedViewModel<T> extends ViewModel {
private final MutableLiveData<T> selected = new MutableLiveData<>();
public void select(T item) {
selected.setValue(item);
}
public LiveData<T> getSelected() {
我体验过MutableLiveData对象的奇怪行为,因为它们有时会被连续观察,即使其中的数据没有变化。据我所知,只有当它从非活动状态变为活动状态或其中的数据已被修改时,才应该观察它。
在我的视图模型中:
val liveData = MutableLiveData<Any>()
在片段中:
viewModel.liveData.observe(this, Observer { response ->
//stuff to do and it is called continuously
}
})
你能帮助我理解这种行为吗?或者有什
当时我正在阅读与LiveData和ViewModels有关的安卓文档,我遇到了一条令我困惑的条目。
在中,示例代码实现如下所示的观察者
public class NameActivity extends AppCompatActivity {
private NameViewModel model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Other code to setup the activity...
在AndroidStudio的Kotlin中处理一个项目,这是相当基本的东西,但是MutableLiveData并没有像我期望的那样工作。我是不是做错了什么,或者我搞不懂它是怎么工作的?
我使用viewModel来处理LiveData,为了测试目的,rn只是在片段的onCreate方法中运行一些代码:
ViewModel
class UserViewModel : ViewModel() {
var currentUser: User = DataSource.user
private var _selectedSkillPoints = MutableLiveData&l