android开发:JetPack之LiveDate(一)

上一篇文章讲到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负责发生通知。

你可能感兴趣的