Зачем нам нужны LiveData и ViewModel

Я использовал LiveData and ViewModel пример, но я не понимаю, как использовать эту функцию, потому что я могу изменить значение напрямую, не используя эту функцию, даже если число кода увеличивается, используя код наблюдения и то же, что и в ViewModel создавая MutableLiveData,

ниже ViewModel Код открытого класса 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;
    }


}

Использование в деятельности

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);
            }
        });

    }
}

3 ответа

ViewModel а также LiveData Компоненты архитектуры Android вместе помогают создавать приложения, поддерживающие жизненный цикл.

ViewModel: классы ViewModel часто используются для существенного отделения логики представления (представленной в классах Activity) от бизнес-логики, которая содержится в классах ViewModel. Эта сегрегация является хорошим архитектурным проектом и становится очень важной при поддержке больших проектов.

LiveData: LiveData помогает реализовать шаблон Observer Observable с учетом жизненного цикла.

В вашем случае это может показаться тривиальным, поскольку вы устанавливаете значение только для TextView, Однако рассмотрим распространенные сценарии, такие как использование API для получения данных и т. Д. В таких случаях ViewModel несет ответственность за предоставление данных для отображения в Activityчто когда сделано с помощью LiveData может помочь избежать сбоев, обеспечивая легкое понимание жизненного цикла.

Проще говоря, это облегчает вашу жизнь программиста, когда мы углубляемся в детали, такие как обработка жизненного цикла действия / фрагмента, отображение обновленных данных и, что более важно, отделение уровня представления от бизнес-логики и создание более структурированного приложения. пожалуйста, найдите более подробную информацию здесь

Вы можете прочитать о реальных данных здесь. Это как Observer который ищет изменения данных и уведомляет наблюдателей, что наблюдаемый объект изменился

Другие вопросы по тегам