ViewModel 的介绍与用法
ViewModel 是负责为{@link android.app.Activity Activity}或{@link androidx.fragment.app.Fragment Fragment}准备和管理数据的类。它还处理 Activity / Fragment 与应用程序其余部分的通信(例如,调用业务逻辑类)。
一个 ViewModel 总是与一个范围(一个 Fragment 或者一个 Activity )相关联而创建的,只要作用域是活的,就会被保留。例如,如果它是一个 Activity ,直到它finish。
换句话说,这意味着如果 ViewModel 的所有者因配置更改(例如旋转)而被销毁,则不会销毁它。所有者的新实例将重新连接到现有的 ViewModel 。
ViewModel 的目的是获取并保留 Activity 或 Fragment 所需的信息。 Activity 或 Fragment 应能够观察 ViewModel 中的更改。 ViewModel 通常通过{@link LiveData}或 Android 数据绑定公开此信息。您也可以使用自己喜欢的框架中的任何可观察性构造。
ViewModel的唯一责任是管理UI的数据。它绝不应该访问您的视图层次结构或保留对 Activity 或 Fragment 的引用。
从 Activity 的角度来看,典型的用法是:
``` Java
public class UserActivity extends Activity {
{@literal @}Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_activity_layout);
final UserModel viewModel = new ViewModelProvider(this).get(UserModel.class);
viewModel.getUser().observe(this, new Observer