0 原文
https://blog.csdn.net/u011810352/article/details/81334339
一个观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时,的数据发生变化,则会通知观察者;若观察者处于其他状态,即使LiveData的数据发生变化,也不会发出通知。
2019-12-22 22:17:33.126 11578-11578/com.wu.su.livedatastudy D/shz_debug: onStart
2019-12-22 22:17:33.128 11578-11578/com.wu.su.livedatastudy D/shz_debug: onResume
1. 添加依赖
dependencies {
//...
def lifecycle_version = "1.1.1"
//仅仅依赖LiveData
implementation "android.arch.lifecycle:livedata:$lifecycle_version"
}
2. 如何使用 LiveData demo
2.1 LiveData
使用 LiveData 子类 MutableLiveData
package com.wu.su.livedatastudy;
import androidx.lifecycle.MutableLiveData;
public class TestModel {
// MutableLiveData 为可变数据
private MutableLiveData<String> instans;
public MutableLiveData<String> getInstans() {
if (instans == null) {
instans = new MutableLiveData<>();
}
return instans;
}
}
2.2 调用实例
虽然我在所有时间添加了 setValue 事件,但是还是只在 onResume和onStart才触发监听
package com.wu.su.livedatastudy;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import android.os.Bundle;
import android.util.Log;
import java.util.Observable;
public class MainActivity extends AppCompatActivity {
private final static String TAG = "shz_debug";
private TestModel testModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initListener();
testModel.getInstans().setValue("onCreate");
}
private void initListener() {
testModel = new TestModel();
testModel.getInstans().observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
Log.d(TAG, s);
}
});
}
@Override
protected void onStart() {
super.onStart();
testModel.getInstans().setValue("onStart");
}
@Override
protected void onResume() {
super.onResume();
testModel.getInstans().setValue("onResume");
}
@Override
protected void onStop() {
super.onStop();
testModel.getInstans().setValue("onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
testModel.getInstans().setValue("onDestroy");
}
}