JetPack之Lifecycle使用
为什么要引进Lifecycle?
由于我们在系统组件中使用某些成员变量时,需要保持与组件生命周期同步,就不免会添加多个onStop,onDestroy的回调方法,在这些方法中调用我们普通组件的生命周期方法,导致文件臃肿,耦合性很强。为此,Google提供了LifeCycle作为处理方案。LifeCycle可以帮助开发者创立可感知生命周期的组件。这样,组件便能够在其内部管理自己的生命周期,从而降低模块间的耦合度,并降低内存泄漏发生的可能性。LifeCycle不只对Activity/Fragment有用,在Service和Application中也能大显身手。
使用lifecycle监听Activity生命周期示例:
创立接口MyLifecycleObserver类继承LifecycleObserver接口,让它成为一个Lifecycle的观察者。
class MyLifecycleObserver implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) void onCreate() { Log.d("TAG", "onCreate生命周期回调"); } @OnLifecycleEvent(Lifecycle.Event.ON_START) void onStart() { Log.d("TAG", "onStart生命周期回调"); } @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) void onResume() { Log.d("TAG", "onResume生命周期回调"); } @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) void onPause() { Log.d("TAG", "onPause生命周期回调"); } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) void onStop() { Log.d("TAG", "onStop生命周期回调"); } @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) void onDestroy() { Log.d("TAG", "onDestroy生命周期回调"); }}在MainActivity的onCreate方法中,通过getLifecycle()方法获取内部的Lifecycle对象,增加MyLifecycleObserver,那么MyLifecycleObserver即可以观察到MainActivity的各个生命周期的变化。
getLifecycle().addObserver(new MyLifecycleObserver());打印生命周期事件变化:

示例分析:
LifecycleOwner(Lifecycle持有者):实现该接口的类持有生命周期(Lifecycle对象),该接口的生命周期(Lifecycle对象)的改变会被其注册的观察者LifecycleObserver观察到并触发其对应的事件。
LifecycleObserver( Lifecycle观察者):实现该接口的类,通过注解的方式,可以通过被LifecycleOwner类的addObserver(LifecycleObserver observer)方法注册,被注册后,LifecycleObserver便可以观察到LifecycleOwner的生命周期事件。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JetPack之Lifecycle使用