查看ViewModel文档,它说:
换句话说,这意味着如果ViewModel不会被销毁 其所有者因配置更改(例如轮换)而被销毁。该 所有者的新实例将重新连接到现有的 视图模型。
如果销毁引用它的活动,ViewModel是如何被销毁的?一旦我们创建一个新活动,它是如何重新连接的?
答案 0 :(得分:5)
在幕后使用ScrollViewer
。保留的片段在重新创建Activity
时保留其状态(例如从配置更改)。
请参阅Google IO 2017中的retained fragment演讲,其中Yigit Boyar谈论ViewModel
。
答案 1 :(得分:2)
答案是,如果您使用ViewModelProviders.of(this).get(YourViewModel.class)创建ViewModel,库将为您缓存ViewModel。如果您使用“new YourViewModel()”创建ViewModel,ViewModel将在每次活动配置更改时重新创建。 在ViewModelProviders中,它会创建一个HolderFragment来添加到您的活动或您的片段,它是不可见的,当配置更改,活动被破坏,但缓存仍然存活时,因此下次活动创建时,ViewModel将重新连接到它。 / p>