使用应用程序创建 ViewModel

dca*_*121 6 android android-livedata android-viewmodel

我试图将数据设置到一个文件中的 ViewModel 上,但我不希望在该文件中保存任何活动引用。

A 类 -> 将数据设置到 ViewModel 中的 LiveData 上 具有 Application 类引用,但不保存活动或片段

B 类 -> 从 ViewModel 中的 LiveData 读取数据 拥有对 Activity 的引用。

B 类可以随着 Activity 的配置更改而被销毁和重新创建。A类持久化在内存中并不断向LiveData设置数据

问题:ViewModelProviders.of(activity orfragment).get() ViewProviders需要activity或fragment实例。

Vyg*_*s B 2

ViewModel 与 Activity 和 Fragment 的生命周期紧密相关,因此您无法将它们与应用程序上下文一起使用,而需要使用 Activity 和 Fragment 的上下文。

如果您想在片段之间共享数据,您可以使用getActivity()相同的 ViewModel 来保存您的数据,并且只要您的 Activity 在范围内,它就会一直存在。