查看ViewModel文档,它说:
换句话说,这意味着如果 ViewModel 的所有者因配置更改(例如旋转)而被销毁,则不会销毁 ViewModel。所有者的新实例将重新连接到现有的 ViewModel。
如果引用它的活动被破坏,ViewModel 是如何不被破坏的?一旦我们创建了一个新的活动,它是如何重新连接的?
查看ViewModel文档,它说:
换句话说,这意味着如果 ViewModel 的所有者因配置更改(例如旋转)而被销毁,则不会销毁 ViewModel。所有者的新实例将重新连接到现有的 ViewModel。
如果引用它的活动被破坏,ViewModel 是如何不被破坏的?一旦我们创建了一个新的活动,它是如何重新连接的?
答案是如果您使用 ViewModelProviders.of(this).get(YourViewModel.class) 创建 ViewModel,该库将为您缓存 ViewModel。如果您使用“new YourViewModel()”创建 ViewModel,则 ViewModel 将在每次活动配置更改时重新创建。在 ViewModelProviders 中,它会创建一个 HolderFragment 来添加到您的 Activity 或 Fragment,它是不可见的,当配置更改时,Activity 被销毁,但缓存仍然存在,因此下次创建 Activity 时,ViewModel 将重新连接到它。