本文不是介绍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使用这里不做介绍),最后突然觉得我们看源码不仅是看它怎么实现,更重要的是看它的设计思路,学以致用!!!

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

更多相关文章

  1. Android以太网框架情景分析之NetworkFactory与NetworkAgent深入
  2. 神奇的 Magisk
  3. 关于Android(安卓)Service真正的完全详解,你需要知道的一切
  4. Android进阶笔记10:Android(安卓)万能适配器
  5. Android(安卓)退出Activity
  6. Android(安卓)- SQLite
  7. 有关于android屏幕横屏竖屏设置的问题
  8. Android(安卓)传感器(详解一)
  9. 【Android】Service 生命周期

随机推荐

  1. android下不规则多边形填充位图
  2. Android: Android(安卓)Light Sensor HOW
  3. Android(安卓)SplashActivity启动时黑屏
  4. Android包(android.view.animation)的简介
  5. Android添加USB add-on硬件访问服务
  6. android 获取位置
  7. Android(安卓)Studio之编译t提示Invoke-c
  8. 学习目录
  9. ubuntu10.10下编译android内核源码
  10. android客户端程序访问服务器端webservic