当前位置: 首页 > news >正文

WordPress底部添加版权注明南京seo代理

WordPress底部添加版权注明,南京seo代理,Dreamweaver做网站教程,网站建设 静态类前提 阅读本文的前提是要了解观察者模式。本文没有讲述反射相关的内容,功能中有使用反射。 简介 监听Activity/Fragment的生命周期,使用观察者模式,Activity/Fragment是被观察者。 监听的生命周期有onCreate、onStart、onResume、onPause…

前提

阅读本文的前提是要了解观察者模式。本文没有讲述反射相关的内容,功能中有使用反射。

简介

监听Activity/Fragment的生命周期,使用观察者模式,Activity/Fragment是被观察者。

监听的生命周期有onCreate、onStart、onResume、onPause、onStop和onDestroy。

androidx的特有功能。

使用

创建观察者

实现LifecycleObserver接口,使用注解监听对应的生命周期。

或者实现DefaultLifecycleObserver接口,同Activity/Fragment对应的函数监听对应的生命周期,且持有LifecycleOwner对象,AppCompatActivity是LifecycleOwner的子类。

注解方式在新版本已被弃用,项目中一般使用该方法。

注册观察者

AppCompatActivity中的成员变量mLifecycleRegistry,通过getLifecycle()获取。

LifecycleRegistry类实现Lifecycle接口,使用Lifecycle接口的addObserver()函数注册观察者。

综上可知:

实现AppCompatActivity类的Activity,可以使用lifecycle.addObserver(观察者)来注册观察者。

Tips:

一般在Activity的onCreate中注册观察者。

如果在onResume中注册观察者,会执行onCreate、onStart和onResume。(具体原因在源码分析)

PS:被观察者通知观察者由LifeCycle库实现。

源码分析

注册观察者时做了什么?

存储观察者对象,以及观察者类的class信息,回调生命周期对应函数时使用反射调用对应函数。

Lifecycle的实现类是LifecycleRegistry。

来分析下LifecycleRegistry的addObserver函数。

如何在Activity的生命周期被触发时调用观察者的对应函数?

如何获取Activity的生命周期?

核心实现在ReportFragment类的injectIfNeededIn方法中。

具体怎么做的?

ReportFragment是一个Fragment。

API=29的实现方式不同。

API版本

ReportFragment监听到Activity生命周期后,会调用ReportFragment的dispatch来调用观察者的对应函数。

API>=29时,是给Activity类添加回调,然后在Activity分发生命周期方法onCreate、onResume等时同时触发回调对应的方法。

向Activity类的成员变量mActivityLifecycleCallbacks添加一个LifecycleCallbacks对象,本质就是回调。

那么Activity是怎么将生命周期回调至LifecycleCallbacks对象呢?(以分析下onCreate为例)。

是在AMS分发Activty生命周期的时候处理的。AMS调用Activity的onCreate的函数是在performCreate中分发的。

不同版本分发的具体实现,都是通过ReportFragment的dispath函数来实现的。

dispath函数如何分发给观察者?

在分发的过程中没有直接使用对应的事件分发,在中间进行了事件和状态的转变处理,目的是为了灵活,在其他库使用Lifecycle时可以根据状态进行相应的处理。

例如:LiveData库会根据状态判断是否通知UI刷新。

事件有:

状态有:

事件与状态的关系如下图:

通过状态决定要执行什么事件(状态驱动事件)。

Lifecycle和观察者的状态是分别存储的,通过对比新旧状态,决定要执行什么事件。

状态的对比是通过枚举类型的数据进行大小对比来进行的。

为什么在onResume中注册,会执行onCreate、onStart和onResume?

onCreate、onStart和onResume01都是在回调onResume时触发的。

原因是在同步观察者状态时,是根据状态一步一步触发的。

循环过程如下图:

http://www.hengruixuexiao.com/news/55408.html

相关文章:

  • 互联网门户网站建设关键词林俊杰在线听免费
  • 瑞安自适应网站建设网络广告文案案例
  • 随州公司做网站怎么进行seo
  • 用台电脑做网站最新提升关键词排名软件
  • 大型营销型网站建设排名前十的小说
  • 做推广需要网站吗网站维护需要学什么
  • 网站速度优化工具营销型网站建设要点
  • 深圳网站开发哪家好怎么收录网站
  • 什么网站可以做相册比较靠谱的推广公司
  • 做网站运维应该看的书上海好的网络推广公司
  • 网站弹窗怎么做网络推广员怎么做
  • 免费域名空间申请杭州seo推广优化公司
  • 宁波网站推广在哪里上海短视频推广
  • 学校网站建设新闻西安seo和网络推广
  • 十三五关于网站建设营业推广策划方案
  • 广州 网站制作夸克搜索
  • 鲜花销售网站开发费用长沙网红打卡地
  • ppt中超链接网站怎么做seo名词解释
  • 宜春网站开发公司电话百度上广告怎么搞上去的
  • 深圳做网站优化报价优化大师使用方法
  • 河南网站建设哪里有天津seo排名扣费
  • 武清做网站公司武汉搜索引擎排名优化
  • 网页美工设计实训sem优化师是做什么的
  • mac做网站改html文件优化大师哪个好
  • 长沙做网站的公司买卖友链
  • wordpress 劣势宁波seo推广
  • 商务网站建设实训心得网址大全qq浏览器
  • 成都建站模板公司平台推广方案
  • 表情包制作生成器seo做什么网站赚钱
  • 甘肃网络公司网站建设可以发外链的平台