Lifecycle 是官方提供的架构组件之一,是具有生命周期感知能力的组件。也就是说,我们能在 Activity 或者 Fragment 的生命周期发生变化的时候得到通知
依赖
1 2
| implementation "android.arch.lifecycle:livedata:1.1.1" annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
|
使用
如果我们Activity继承自support library在26.1.0和之后包中的AppCompatActivity,那么就无需继承,否则Activity需要实现LifecycleOwner接口。
创建一个类,让它实现 LifecycleObserver 接口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class Life implements LifecycleObserver {
private static final String TAG="life_tag";
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) public void a(){ Log.d(TAG, "Life: -------- onpause" ); }
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void b(){ Log.d(TAG, "Life: -------- onResume" ); } }
|
同时在对应的方法中添加注解,并设置对应的生命周期阶段
绑定对应的对象:
1
| getLifecycle().addObserver(new Life());
|
在activity的对应的生命周期时,就会调用对应的绑定的方法。
如果activity未实现LifecycleOwner接口,则需要自己实现该接口,并在对应的生命周期方法中调用对应的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class LifeCycleActivity extends Activity implements LifecycleOwner {
private LifecycleRegistry mLifecycleRegistry;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLifecycleRegistry = new LifecycleRegistry(this); getLifecycle().addObserver(new MyObLifeserver()); mLifecycleRegistry.markState(Lifecycle.State.CREATED); }
@Override protected void onResume() { super.onResume(); mLifecycleRegistry.markState(Lifecycle.State.RESUMED); }
@Override protected void onPause() { super.onPause(); mLifecycleRegistry.markState(Lifecycle.State.STARTED); }
@NonNull @Override public Lifecycle getLifecycle() { return mLifecycleRegistry; } }
|