Jetpack深度探索

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);
  1. 实现LifecycleOwner接口:需要实现getLifecycle()方法
  2. 成员变量LifecycleRegistry:返回给上层,进行注册
  3. onCreate中add ReportFragment:回调onActivityCreate等生命周期时,会disptach分发,
    5、ReportFragment如何绑定到Activity?如何事件上报?
public class ReportFragment extends android.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值