Jetpack深度探索
文章目录
本文链接:https://blog.youkuaiyun.com/feather_wch/article/details/132094862
Lifeycle
1、是一种利用空白Fragment的技巧,采用了观察者模式、状态机和装饰者模式,并且用Map针对反射进行性能优化的,生命周期组件。
2、注册:装饰者模式
Observer->ReflectiveGenericLifecycleObserver->LifecycleEventObserver->ObserverWithState
反射->onStageChanged->State
3、事件派发:Activity->ReportFragment(派发六大事件)->LifecycleRegisry(五大状态处理)->拆包装(state和mState同步->onStageChange->反射调用Map(key=Event,Value=Method))
4、为什么Activity能够被感知?
ComponentActivity: 成员变量
// 1、【implements:LifecycleOwner】 // 标记具有生命周期的组件
public Lifecycle getLifecycle() {
return mLifecycleRegistry; // 生命周期组件
}
// 2、
private final LifecycleRegistry mLifecycleRegistry = new LifecycleRegistry(this);
// 3、
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 绑定ReportFragment
ReportFragment.injectIfNeededIn(this); // add
}
// 使用者:注册到LifecycleRegistry(Registry 注册表的意思)
getLifecycle().addObserver(xxx);
- 实现LifecycleOwner接口:需要实现getLifecycle()方法
- 成员变量LifecycleRegistry:返回给上层,进行注册
- onCreate中add ReportFragment:回调onActivityCreate等生命周期时,会disptach分发,
5、ReportFragment如何绑定到Activity?如何事件上报?
public class ReportFragment extends android.

最低0.47元/天 解锁文章
955

被折叠的 条评论
为什么被折叠?



