jetpack是一整套google为开发者提供的开发库,里面包含很多组件,今天学习下LifeCycle
LifeCycle是可以感知生命周期型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护
有了LifeCycle像有些内存泄露问题就可以解决了
现在来看看它的使用
定义一个类实现LifecycleObserver
public class ActivityLifecycle implements LifecycleObserver {
private static final String TAG ="ActivityLifeObserver" ;
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate() {
Log.e(TAG, "onCreate: " );
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart() {
Log.e(TAG, "onStart: " );
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume() {
Log.e(TAG, "onResume: " );
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause() {
Log.e(TAG, "onPause: " );
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop() {
Log.e(TAG, "onStop: " );
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroy() {
Log.e(TAG, "onDestroy: " );
}
}
最主要的是看LifeCycle 中的枚举Event注解中有那些
public enum Event {
/**
* Constant for onCreate event of the {@link LifecycleOwner}.
*/
ON_CREATE,
/**
* Constant for onStart event of the {@link LifecycleOwner}.
*/
ON_START,
/**
* Constant for onResume event of the {@link LifecycleOwner}.
*/
ON_RESUME,
/**
* Constant for onPause event of the {@link LifecycleOwner}.
*/
ON_PAUSE,
/**
* Constant for onStop event of the {@link LifecycleOwner}.
*/
ON_STOP,
/**
* Constant for onDestroy event of the {@link LifecycleOwner}.
*/
ON_DESTROY,
/**
* An {@link Event Event} constant that can be used to match all events.
*/
ON_ANY
}
上面对应就是activity的生命周期
在Activity中
getLifecycle().addObserver(new ActivityLifecycle());
相当于观察者模式,比如很多activity中在某个生命周期方法中要释放什么资源的,就不需要在每个activity都去写了 ,这样维护起来也方便,可以结合mvp架构模式,V层通常都是使用弱引用去维护它,现在有了LifeCycle,可以结合它在onDestory()方法中去做了 ,