Android(安卓)P(api 28) 监听Activity生命周期:全局监听和局部监听
16lz
2021-01-26
文章目录
- 全局监听
- 局部监听
- 配置
- 使用
全局监听
在 api 28之前, 使用 android.app.Application.ActivityLifecycleCallbacks 监听 Activity 的生命周期。它始于 api 14(android 4.0)。从它的包名可以看出,它是 Application 级的监听接口。需要在 Application 中通过registerActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback) 、 unregisterActivityLifecycleCallbacks(ActivityLifecycleCallbacks callback)
进行注册与反注册。
由于是全局性的,所以写些全局性的代码较为合适。
局部监听
用到 jetpack 中的架构组件 Lifecycles
配置
- androidx.appcompat 配置
对于使用 androidx 库,来使用兼容性的 androidx 包下的 Fragment 或 AppCompatActivity,都可以在它们内部,通过getLifecycle()
,获取到的是androidx.lifecycle.Lifecycle
androidx 还太新了,各种开源类库支持的力度不够。用了它,可能会有各种麻烦问题出现。
- 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();}
这样,就能在相应的生命周期方法中处理自己的逻辑了。
注意:
- 如上,使用的是观察者模式。可以添加多个观察者 LifecycleObserver 实例。
- 局部监听方式,也可以运行在低版本的设备上的;只是要求编译配置版本是 28,support-v7版本是28
更多相关文章
- Android控件系列(未完待续)
- React Native for Android(安卓)环境配置
- Android下的配置管理之道之gerrit权限管理
- Android(安卓)Studio关联source源码
- FcfrtNetStatus实现Android网络监听
- Android之——使用Android(安卓)studio创建的AIDL编译时找不到自
- Android(安卓)实现通话监听功能
- Android(安卓)NDK开发初识
- Android(安卓)Studio下通过Gradle配置实现资源文件的模块化