Зачем нам нужны 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
который ищет изменения данных и уведомляет наблюдателей, что наблюдаемый объект изменился