为什么我们需要 LiveData 和 ViewModel

Why do we need LiveData and ViewModel

我用过LiveData and ViewModel例子 但是我不明白这个功能的使用,因为我可以直接更改值而不使用这个功能,即使这是通过使用观察代码在代码中增加的行数以及通过创建 MutableLiveData.[= 与 ViewModel 中相同16=]

下面ViewModel代码 public class FirstViewModel 扩展了 ViewModel {

    // Create a LiveData with a String
    public MutableLiveData<String> mCurrentName;


    public MutableLiveData<String> getCurrentName() {
        if (mCurrentName == null) {
            mCurrentName = new MutableLiveData<String>();
        }
        return mCurrentName;
    }


}

在Activity

中使用
public class MainActivity extends AppCompatActivity {
    private FirstViewModel mModel;
ActivityMainBinding mBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mBinding=DataBindingUtil.setContentView(this,R.layout.activity_main);


        // Get the ViewModel.
        mModel= ViewModelProviders.of(this).get(FirstViewModel.class);


        // Create the observer which updates the UI.
        final Observer<String> nameObserver = new Observer<String>() {
            @Override
            public void onChanged(@Nullable final String newName) {
                // Update the UI, in this case, a TextView.
                mBinding.mNameTextView.setText(newName);
            }
        };

        // Observe the LiveData, passing in this activity as the LifecycleOwner and the observer.
        mModel.getCurrentName().observe(this, nameObserver);


       mBinding.btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              String anotherName = mBinding.etField.getText().toString();
             mModel.getCurrentName().setValue(anotherName);
            }
        });

    }
}

您可以阅读 here 中的实时数据。就像 Observer 寻找数据的变化并通知 observers observable 对象已经改变

简而言之,当我们深入了解 activity/fragment 生命周期处理、显示更新数据以及更重要的是将表示层与业务逻辑分离并创建更好的结构化应用请从 here

中找到更多详细信息

ViewModelLiveData android 架构组件一起帮助创建生命周期感知 应用程序。

ViewModel: ViewModel 类 通常用于将视图逻辑(存在于 Activity 类 中)与包含在 ViewModel 类 中的业务逻辑显着隔离。这种隔离是一种很好的架构设计,在维护大型项目时变得非常重要。

实时数据: LiveData 有助于以生命周期感知方式实施 Observer Observable pattern

在您的情况下,这似乎微不足道,因为您只是为 TextView 设置值。然而,请考虑常见的场景,例如点击 api 来检索数据等。在这种情况下,ViewModel 负责提供要在 Activity 中显示的数据,当完成LiveData 的帮助可以通过轻松确保生命周期意识来帮助避免崩溃。