文章目录

  • 全局监听
  • 局部监听
    • 配置
    • 使用


全局监听

在 api 28之前, 使用 android.app.Application.ActivityLifecycleCallbacks 监听 Activity 的生命周期。它始于 api 14(android 4.0)。从它的包名可以看出,它是 Application 级的监听接口。需要在 Application 中通过registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) 、 unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) 进行注册与反注册。
由于是全局性的,所以写些全局性的代码较为合适。


局部监听

用到 jetpack 中的架构组件 Lifecycles

配置

  1. androidx.appcompat 配置
    对于使用 androidx 库,来使用兼容性的 androidx 包下的 Fragment 或 AppCompatActivity,都可以在它们内部,通过 getLifecycle() ,获取到的是 androidx.lifecycle.Lifecycle

androidx 还太新了,各种开源类库支持的力度不够。用了它,可能会有各种麻烦问题出现。

  1. support-appcompat 配置
    不用 androidx ,还是采用 com.android.support:appcompat-v7:28.0.0 这样的配置。
    同样的,通过兼容性的 support-v4下的Fragment 或 support-v7中的 AppCompatActivity,都可以在它们内部,调用 getLifecycle() ,获取到的是android.arch.lifecycle.Lifecycle
    所以需要另引入 android.arch.lifecycle:extensions:1.1.1

使用

如上,获取 Lifecycle,就可以 添加观察者:addObserver(LifecycleObserver observer),在适当时 移除观察者removeObserver(LifecycleObserver observer)
由于 LifecycleObserver 是一个空接口,没有任何抽象方法,要求自实现它,并添加 有android.arch.lifecycle.OnLifecycleEvent注解的抽象方法。如:

import android.arch.lifecycle.Lifecycle;import android.arch.lifecycle.LifecycleObserver;import android.arch.lifecycle.OnLifecycleEvent;/** * desc     : * author   : stone * email    : aa86799@163.com * time     : 2019/3/6 12 17 */public interface LifecycleCallback extends LifecycleObserver {    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)    void onCreate();    @OnLifecycleEvent(Lifecycle.Event.ON_START)    void onStart();    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)    void onResume();    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)    void onPause();    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)    void onStop();    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)    void onDestroy();    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)    void onAny();}

这样,就能在相应的生命周期方法中处理自己的逻辑了。

注意:

  1. 如上,使用的是观察者模式。可以添加多个观察者 LifecycleObserver 实例。
  2. 局部监听方式,也可以运行在低版本的设备上的;只是要求编译配置版本是 28,support-v7版本是28

更多相关文章

  1. Android控件系列(未完待续)
  2. React Native for Android(安卓)环境配置
  3. Android下的配置管理之道之gerrit权限管理
  4. Android(安卓)Studio关联source源码
  5. FcfrtNetStatus实现Android网络监听
  6. Android之——使用Android(安卓)studio创建的AIDL编译时找不到自
  7. Android(安卓)实现通话监听功能
  8. Android(安卓)NDK开发初识
  9. Android(安卓)Studio下通过Gradle配置实现资源文件的模块化

随机推荐

  1. Android学习路线(转)
  2. Android(安卓)GridLayout 动态添加子控件
  3. android加载大图推荐框架LargeImageView
  4. Android(安卓)PC投屏简单尝试(录屏直播)2
  5. VS2015开发Android,自带模拟器无法调试、
  6. 慎用原生MediaPlayer类播放音频
  7. Android(安卓)JNI编程(七)——使用AndroidS
  8. android 机器耗电
  9. Android(安卓)基础总结:( 十六)Android(安卓
  10. C#+Hybrid App(Android)实现微信APP支付