上一篇文章讲到ViewModel如何使用,这篇文章讲LiveDate
android开发:JetPack之ViewModel(一)
简介:
LiveDate是可以被观察的数据持有者,LiveDate数据发生变化时候可以通知activity、fragment。
当activity、fragment作为观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时(即onStart()、onResume()、onPause()),LiveData的数据发生变化,则会通知观察者;若观察者处于其他状态,即使LiveData的数据发生变化,也不会发出通知。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView textView;
MyViewModel myViewModel;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.tv_text);
button = findViewById(R.id.bt_button);
button.setOnClickListener(this);
//通过ViewModelProviders创建ViewModel
myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
//观察liveDate对象,将this传入,liveDate将会和activity的生命周期关联
myViewModel.liveData.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
Log.e("Tag", s);
textView.setText(s);
}
});
}
@Override
public void onClick(View view)
{
myViewModel.getName();
}
}
public class MyViewModel extends ViewModel {
MutableLiveData<String> liveData = new MutableLiveData();
public void getName() {
//liveData发生数据
liveData.postValue(String.valueOf(1));
}
}
一般LiveDate都是配合ViewModel使用。ViewModel进行数据操作,LiveDate负责发生通知。