lifecycle 源码分析

lifecycle会使用一个空白fragment监听生命周期

监听到生命周期分发出去

爷爷类实现lifecycleower

生命周期管理是只有5个,onresume后会倒退,走状态不同生命周期也不同

生命周期不对齐就分发

使用的是观察者模式观察生命周期

使用map保存反射的内容,等待使用时激活

callback info = new callbackinfo(handleeven)

mcallbackmap.put(class,info)

method.put(class,info)

class对象只能有一个

首先在Activity的父Fragment里onCreate里 

ReportFragment.injectIfNeededIn(this);

这段抄了Gradle的源码,用一个空白的Fragment来监听onStart,一个无UI的Fragment

 能够监听生命周期

 那为什么不在Activity里写这种写法,用Fragment来封装Activity,如果其他Activity也想使用这种覆盖上去即可

 最重要的分发方法,Activity的父类实现的是

LifecycleOwner接口

 这也就是为什么licycle还有倒退流程

 

接下来看几个状态的切换流程 

 

如何将流程前进的?

 downEvent每次会向前或者向后移动一位不停循环

 接下来,如果状态对齐就同步状态,如果状态同步就返回

eume.compareTo (枚举类型比大小)通过枚举大小来判断是向前还是向后

那么这个mObserverMap是什么?

它内部存放的就是我们的观察者 

也就是说,当我们观察者生命周期小的时候就前进,大的时候便后退

在add方法中,刚进入就会发起一次分发

那么如何分发?

addObserver

在进入时候进行循环分发

拿到观察者的.class的文件,准备后期用反射

 

 大部分系统源码都会用MAP存储,提高性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值