IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Jetpack学习01 Lifecycle的使用及其运行原理 -> 正文阅读

[移动开发]Jetpack学习01 Lifecycle的使用及其运行原理

一. LifeCycle库的使用
1. 使用场景
监听LifecycleOwner控件(一般为Activity, Fragment等)的生命周期的状态迁移
2. 项目中配置
https://developer.android.google.cn/jetpack/androidx/releases/lifecycle
3. 新建一个LifeCycleObsever的子类。对于在被监听的LifecycleOwner控件的生命周期方法中实现的自己的api,添加注解@OnLifecycleEvent(Lifecycle.Event.ON_CREATE).例如此注解表示在监听LifecycleOwner控件发出的Event.ON_CREATE事件。
4. 在LifecycleOwner控件中,注册LifeCycleObsever
getLifecycle().addObserver(LifeCycleObsever);

二. LifeCycle的实现原理
(一)初始化阶段: 将observer和其状态封装在一起
1. 在LifecycleOwner控件中,注册LifeCycleObsever时,getLifecycle().addObserver(LifeCycleObsever)中,在LifeycleRegistry.java 中,将Observer对象和其初始状态INITIALIZED封装在ObserverWithState对象中
2. ObserverWithState中
2.1 将Observer封装成 ReflectiveGenericLifecycleObserver对象
3. ReflectiveGenericLifecycleObserver中
3.1 ClassesInfoCache.Sinstance.getInfo(Observer对象.class),实质是在ClassesInfoCache中,根据Observer对象的类名,找到其所有的方法,找到其中带有OnLifecycleEvent.class注解的方法,获取其参数数量,将该方法与其参数数量封装在MethodReference类中,然后再讲该类和其对应的注解携带的Event封装在一起,然后封装成CallbackInfo对象中。

(二)根据observer其绑定的状态获取对应的Event事件,然后根据Event事件获取下一个state,通知对应的ReflectiveGenericLifecycleObserver执行onStateChanged()方法

(三)此时会调用CallbackInfo.invokeCallbacks(owner, Event, Observer),实际是调用的ClassesInfoCache.invokeCallbacks(),最终会根据MethodReference中的Method和其参数个数,反射调用该method.

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:05:58  更:2022-01-14 02:07:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:45:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码