Android ViewModel - 如何强制重新创建某些配置更改

标签 android android-jetpack android-viewmodel android-architecture-components

ViewModel的目的是保留有关生命周期事件和配置更改的数据。

但是对于某些配置更改,例如语言环境更改,我想获得一个新的 viewModel 实例。我怎样才能强制娱乐?

class HomeActivity : AppCompatActivity() {

    var viewModelFactory: ViewModelProvider.Factory

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // How to get new instance on locale change?
        var viewModel = ViewModelProviders.of(this, viewModelFactory)
        .get(HomeViewModel::class.java)
    }
}

最佳答案

回答我自己的问题:)

我有幸在 2019 年 Google I/O 大会上与 Yigit Boyar(架构组件负责人)进行了交谈。
他确认故意不可能在 ViewModel 上强制重新创建。正确的解决方案是观察变化并采取行动。

关于Android ViewModel - 如何强制重新创建某些配置更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477523/

相关文章:

android - 如何在启用时更新小部件布局?

android - 在导航组件中导航后的android-clear fragment

android - 更改语言环境在 Android 10 中停止工作

java - 移动 (Android) 游戏在线和互动的最佳实践/最佳服务

java - 我的数组和数组列表 java for android 有什么问题

android - MediaPlayer 停止流式音频播放

android - 文本可组合项在 jetpack 撰写中更改为焦点文本字段

android - 如何在单个 Activity 中加载多个 AndroidViewModel 以访问使用 Room 从多个表返回值的 LiveData

android - 在 Android 的 onClickListener 中多次观察到 LiveData

Android 导航组件在弹出 backstack 时执行一个 Action