gpt4 book ai didi

android - Android ViewModel 的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 11:15:37 25 4
gpt4 key购买 nike

当我每次离开 Activity 并返回时,通过在开发人员选项中启用“不保留 Activity ”来尝试模拟应用中的配置更改时,ViewModel 会重新创建! ViewModels 不应该处理这些情况吗?

我可以通过将 Activity 的状态保存在 onSaveInstanceState 中来解决这个问题,但是使用 ViewModel 有什么意义呢?

最佳答案

When I try to simulate configuration change in my app by enabling "Don't keep activities" in developer options every time I leave an activity and return, the ViewModel is recreated!

据我所知,当您离开 Activity 时,“不要保留 Activity ”会破坏 Activity 。它不模拟配置更改。

在 Android 8.1 上,该设置明确指出:“用户离开后立即销毁所有 Activity”。

Aren't ViewModels supposed to handle these situations?

ViewModel 系统处理配置更改。它不处理被破坏的 Activity 或被终止的进程。

要模拟配置更改,请更改配置。例如,您可以旋转屏幕或更改您的区域设置。

I can handle this problem by saving my activity's state in onSaveInstanceState

任何可以进入已保存实例状态 Bundle 的内容都应进入已保存实例状态 Bundle,因为它可以处理配置更改和进程终止。

what's the point of using a ViewModel?

ViewModel 用于无法进入已保存实例状态 Bundle 的事物,例如:

  • 大事(照片的位图)
  • 实时事物(LiveData、RxJava Observable 等)
  • 输入错误的内容(您不能将 Socket 放入 Bundle 中)
  • 这些东西实际上并不是“实例状态”的一部分,并且在 Android 终止进程时不需要,但您希望保留它们以进行简单的配置更改
  • 等等

关于android - Android ViewModel 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51765621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com