如何执行不受配置更改影响的初始查询

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

我需要在dagger2使用ViewModelProvider.Factory注入的ViewModel中执行初始查询,我可以在片段中执行此操作,但是在这种情况下,当旋转屏幕时,将重新创建活动,并且初始查询将再次执行,我不希望出现这种情况,我想看到旋转之前正在查看的相同数据。

可能的解决方案我可以在ViewModel中定义一个布尔变量并编写此逻辑:

_ ViewModel

var isScreenRotated = true

_ Fragment

   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

        if (searchViewModel.isScreenRotated) {
            searchViewModel.isScreenRotated = false
            searchViewModel.executeSearch("fruits", 1)
        }

    }

提前感谢。

android mvvm constructor viewmodel dagger-2
1个回答
0
投票
当旋转屏幕时,将重新创建活动,并且将再次执行初始查询,并且我不希望出现这种情况,我希望看到与旋转前相同的数据。

这就是为什么Room为您提供LiveData<List<T>>并可以将其存储在ViewModel中,以便在重新订阅时不会重新获取数据的原因。

如果数据已经开始加载或已经加载,则不必担心屏幕是否旋转,如果它不触发重新加载,则无需担心。

如果需要自定义行为,请扩展MutableLiveData并自己跟踪加载状态(如果尚未开始加载,请从onActive开始加载。)>

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