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

用哪个网站做相册视频文件夹北京seo收费

用哪个网站做相册视频文件夹,北京seo收费,网站开发一级分销,惠安网站建设报价前提 阅读本文的前提是要了解观察者模式。本文没有讲述反射相关的内容,功能中有使用反射。 简介 监听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.dt0577.cn/news/1871.html

相关文章:

  • 桂林建设信息网站下载百度软件
  • 域名备案和网站备案的区别竞价推广代运营企业
  • 响应式网站设计图怎么做网站优化关键词价格
  • WordPress站点地图代码seo外包多少钱
  • asp网站出现乱码网络公司取什么名字好
  • 一个网站seo做哪些工作360应用商店
  • 网站暂时关闭 seo附近学电脑培训班
  • 商城网站的建设seo推广怎么样
  • 网站seo 优帮云公司网站制作公司
  • 外贸网站建设电话免费找精准客户的app
  • 网站页脚设计代码滨州网站建设
  • 西安微信网站建设百度搜索引擎入口官网
  • 企业网站服务器跟域名都需要交钱吗编程培训机构
  • 邯郸网站推广怎么做网络推广公司服务内容
  • 网站编辑怎么做内容分类下载优化大师并安装
  • 昆明360网站制作百度官方电话号码
  • 自己做相册的网站网络营销与直播电商专业就业前景
  • 河北搜恒不给做网站快速排名工具免费
  • p2p网站建设 上海用网站模板建站
  • 海尔网站建设最吸引人的营销广告词
  • 网站开发语言开发关键词有哪些?
  • 中国共产党两学一做网站女性广告
  • 访问不了服务器网站吗可以免费网络推广网站
  • 无锡做网站企业怎么弄一个自己的链接
  • 网站怎样做公众号网站排名优化软件有哪些
  • 在线公司网站查询广告推销网站
  • 做题网站中计算多项式的值怎么做郑州学校网站建设
  • 网站建设方法许昌seo公司
  • wordpress账号密码分享网站seo推广排名
  • 信创网站建设推广平台网站热狗网