当我尝试通过在每次离开活动并返回时在开发人员选项中启用“不保留活动”来模拟应用程序中的配置更改时,将重新创建ViewModel
! ViewModels
是否应该处理这些情况?
我可以通过将活动状态保存在onSaveInstanceState
中来解决此问题,但是使用ViewModel
有什么意义呢?
答案 0 :(得分:3)
当我尝试通过每次退出活动并返回时在开发人员选项中启用“不要保留活动”来模拟应用程序中的配置更改时,将重新创建ViewModel!
AFAIK,“不要保留活动”会在您离开活动时破坏活动。它不会模拟配置更改。
在Android 8.1上,该设置特别指出:“用户离开后立即销毁每个活动”。
ViewModels是否应该处理这些情况?
ViewModel
系统处理配置更改。它不处理活动被破坏或进程被终止。
要模拟配置更改,请更改配置。例如,您可以旋转屏幕或更改语言环境。
我可以通过将活动状态保存在onSaveInstanceState中来解决此问题
可以进入已保存实例状态Bundle
的所有内容都应进入已保存实例状态Bundle
,因为它可以处理配置更改和进程终止。
使用ViewModel有什么意义?
ViewModel
用于无法进入已保存实例状态Bundle
的事物,例如:
Bitmap
)LiveData
,RxJava Observable
等)Socket
放在Bundle
中)