Android Lifecycle的一些感悟

本文不是介绍Lifecycle,而是对Android对于Lifecycle设计的一些感悟,觉得可以在自己应用的开发中借鉴。下面先看源码对Lifecycle的使用,主要涉及两个类,一个是Activity,另一个是fragment(毕竟我们要监听页面的生命周期无非也是从这二者下手)。

先看fragment中怎么处理的

1、fragment实现LifecycleOwner接口。

2、创建一个全局LifecycleRegistry对象(具体里面怎么操作不是本文重点,不再赘述)。

3、在fragment各个生命周期函数中调用LifecycleRegistry的handleLifecycEvent()函数传递对应的生命周期监听。

我这里主要是看Activity中的实现方式(具体在ComponentActivity中),步骤1和2跟fragment一样,关键是第3点,我们会发现Activity并没有在各个生命周期函数中调用LifecycleRegistry的handleLifecycleEvent()函数,而且巧妙的转给ReportFragment处理。1、ComponentActivity的onCreate中转给了ReportFragment,之后就不用再管了,如下

2、ReportFragment中创建一个自己托付给ComponentActivity

然后ReportFragment自己的各个生命周期方法中就得调用LifecycleRegistry的handleLifeEvent()方法传递监听。

所以通过上面的源码中我们不难想到以前我们有这样的需求,比如自定义一个view去实现一些列的功能UI,但是又想在activity每个生命周期方法中做不同的事情,结果我们就会在这个view中定义一个对应方法作为生命周期方法,然后activity中持有,并在不同生命周期中对应view.去调用。这样activity中的每个生命周期方法都得重写很麻烦还不利于解耦,然后我们也同样可以跟Android对于Lifecycle的设计一样,通过中间fragment去处理。我觉得这是一种很好的架构设计,既不会使得activity中代码臃肿同时也很好的解耦view,当然现在Google已办我们做了,我们直接使用Lifecycle就行(Lifecycle使用这里不做介绍),最后突然觉得我们看源码不仅是看它怎么实现,更重要的是看它的设计思路,学以致用!!!

这是我个人的感悟与大家共勉,如有不对请指正!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值