Jetpack--Lifecycle使用介绍及源码分析

Posted 冬天的毛毛雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jetpack--Lifecycle使用介绍及源码分析相关的知识,希望对你有一定的参考价值。

介绍Jetpack:

  • Google在18年10月到19年提出的,旨在提高安卓程序员在开发应用时的一些体验问题。
  • ios一样,在他们的编程世界里,他们的语言是统一的,架构是统一的,工作流也是统一的

Lifecycle:

Lifecycle有什么用?

  • 是为activity和fragment的生命周期做了一个很好的工具,去观测这些生命周期
  • 让观测生命周期的代码不用写到activity里面了,避免过多的代码量和耦合性

Lifecycle是什么?

  • 从源码里拷出来,去掉注释,就剩下Lifecycle的抽象类,发现他是一个观察者

  • 首先,了解事物的本质

Lifecycle怎么用?

  • 写代码体验一下
    • 新建项目,添加第一张图右边的依赖,如果是kotlin注意要加kapt

  • 新建观察者
    • 其实可以直接实现他的父类,他的父类不要实现任何方法,而且这个方法对我们当前没有用

  • 我们想要观察activity生命周期需要怎么做呢?
    • 我们需要编写一个方法,方法名随意

  • 绑定activity
    • activity实现了Lifecycle接口,接口中有一个方法获取Lifecycle,调用他,获取lifecycle,然后绑定观察者

过一下源码

  • 先看在activity里面是怎么实现的?
    • ComponentActivity实现了LifecycleOwner接口,
    • 提供一个getLifecycle的方法
      • 这个方法返回的是LifecycleRegistry(注册者、登记者)

  • LifecycleRegistry就是一个Lifecycle

  • 同样有他的add,remove方法
  • 他是怎么感应activity的周期的呢?然后调用setState,setCurrentState方法的呢?
    • 在他的ComponentActivity的onCreat里面找这个东西
    • 他们在包里面是平级的,肯定有关系

  • ReportFragment是一个Fragment

  • 他把自己注入到了activity中,activity里面的fragment当然也会跟随activity同步他的生命周期

  • 然后在什么周期中dispatch

  • dispatch将消息传递到Lifecycle

  • 所以Lifecycle实际是通过
    • 创建一个Fragment
    • 将Fragment注入到被绑定的Activity里面
    • 通过Fragment将生命周期的变化发送给监听者

最后

小编在网上收集了一些 android 开发相关的学习文档、面试题、Android 核心笔记等等文档,希望能帮助到大家学习提升,如有需要参考的可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3 访问查阅。

以上是关于Jetpack--Lifecycle使用介绍及源码分析的主要内容,如果未能解决你的问题,请参考以下文章

社区说 | 深入理解 Jetpack Lifecycle

Android Jetpack Lifecycle 组件原理剖析

Jetpack Lifecycle 详解

Jetpack Lifecycle 该怎么看?

Jetpack Lifecycle 该怎么看?

Android jetpack LifeCycle 在Application中的应用