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

北京专业网站改版/人力资源培训网

北京专业网站改版,人力资源培训网,开发员给我用织梦做的网站,网络营销方式与工具有哪些Choreographer中postFrameCallback的调用时机 当下一个Vsync信号来临时,会按照Type取出CallbackQuenes中的链表里面存储的CallBackRecord进行遍历其run方法。 那么什么时机往这个队列中添加回调呢? 在ViewRootImpl中(WMS端收到NativeInputQ…

Choreographer中postFrameCallback的调用时机

当下一个Vsync信号来临时,会按照Type取出CallbackQuenes中的链表里面存储的CallBackRecord进行遍历其run方法。

那么什么时机往这个队列中添加回调呢?
在ViewRootImpl中(WMS端收到NativeInputQuene消息回调InputChannel调用到APP端进行ViewRoot分发处理)会调用postFrameCallback方法,这个方法会传入一个FrameCALLback,并将默认使用ANIMATION动画这个回调Type和TOKEN为FRAMETOKEN的token标识来创建一个CallbackRecord并将其添加到对应动画Callback对应的链表中。

在ViewRoot.setView中进行初始化InputChannel和WMS端的InputChannel

流程

ViewRoot的setView方法构造APP端InputChannel对象–>

WindowSession将APP端创建出来的InPUTChannel对象传入到WMS端–>

WMS端进行初始化WMS的InputChannel,申请共享内存并把文件描述符给到APP端的InputChannel对象–>

WMS的InputChannel指向一个fd,而APP端的InputChannel也指向一个fd.这两个后面会进行全双工通信–>

WMS创建两个线程一个ThreadReader读取EventHub(该现场有拦截无用事件的功能并添加到待处理事件队列中),一个ThreadDispatcher用于取出待处理事件队列(对事件进行预处理,设置焦点等)何时进行分发?当上一个事件处理完成之后才会进行分发.(分发过程是将该事件写入到共享内存中,并使用WMS的InputChannel通知APP端的InputChannel【利用初始化时保存的fdpipe通信唤醒】)–>APP端

APP端–>InputChannel从共享内存中拿到事件,InputChannel将事件传递到ViewRoot中,ViewRoot拿着

DecoeView.之后按照Java‘中的事件分发进行处理’

type:这个的用处是下一个Vsync信号来临时,首先会按照TYPE来取出对应的链表,然后进行调用run方法【具体调用哪个方法根据token确定】,接着在取出下一个TYPE如此往复,。固定顺序为:

INPUT 输入处理
Animation,动画处理
Traversal 最终会调用到perfor的measure,layout,draw方法
Commit

token :这个用来表示是否是FrameCallBacl类型的回调还是普通的CallBack,上面的说法其实有点偏,并不是所有CallBack都是调用其run方法,根据其token来决定。

比如这部分讲解的postFrameCallback在Choreographer中会将其转换为FrameCallback的Token和ANIMATION的Callback的type,而像其他的postCallBacl则会具体指定其对应的CallBackType和token是null。

对于FrameCallBacl类型的Callbackl调用其doFrame方法,对于普通的回调CallBacak调用其run方法)【一个很明显的区别是普通的CallBack传入的是一个Runnable最终会调用这个run方法,而对于FrameCallback来说则会调用其doFrame方法。】

对于postFrameCallBack方法的流程图:

【这里提个建议,希望markdown能够支持闪念笔记的流程图格式】

postFrameCallBack方法传入FrameCallbackChoregapher中会将其封装成ANIMATION_Type的Callback和FrameCallback的Token将其封装成一个CallBackRecord放到对应Type的链表中等待下一个Vsync回调-Vsync回调来了按照固定TYPE的顺序取出对应的链表调用CallbackRecord的run方法CallBackRecord的run方法取出token发现为FrameCallback__接着回调接口的doFrame方法

由于postFrameCallBack发送的Callback是ANIMATION的类型CallbackRecord,所以doFrame方法是在处理动画过程中进行调用的,在这个方法里面又进行了添加TRAVERSAL的TYPECallbackRecord,并接着再次注册下一个处理动画的回调。
而对于普通的这种比如TRAVERSAL则是必须要指明其对应type类型和token为null,否则默认会是ANIMATION类型并且是FRAMECALLBACLK的token。

本次ANIMATION处理:发送TRAVERSAL和ANIMATON的回调。

image.png
TRAVERSAL会进入到View的measure,layout,draw方法。Vsync之后会单独拿出一节来讲

ANIMATON会执行动画处理

http://www.lbrq.cn/news/1093285.html

相关文章:

  • ui做自适应网站/友情链接交易平台
  • 手机建网站步骤软件/深圳seo技术
  • 在线教育网站建设/深圳seo推广公司
  • 免费网站自动优化软件/接外包项目的网站
  • 做海报的话网站/域名交易平台
  • joomla 网站建设/最新国内新闻重大事件
  • 成都微信网站建设多/设计公司排名前十强
  • 如何提高商城网站权重/在线crm
  • 买高端品牌网站建设/今日新闻最新头条10条摘抄
  • 网站开发 先做前端吗/中国企业网络营销现状
  • 做阀门的英文网站怎么写/手机打开国外网站app
  • php7安装wordpress/广州seo网站管理
  • 网站开发项目风险/今日头条荆州新闻
  • 济南专业制作网站/搜索引擎优化的办法有哪些
  • 在重庆 那里可以做诚信网站认证/优化是什么梗
  • 网站建设规范布局/武汉seo排名扣费
  • 包头怎样做网站/加盟教育培训机构
  • 做茶网站/黄山seo公司
  • 微网站 功能/郑州网站建设推广优化
  • 建设网站的源代码的所有权/自己网站怎么推广
  • 在马来西亚做博彩网站合法吗/seo搜索引擎优化介绍
  • 微网站可以自己做吗/优化推广seo
  • 做网站需要资料/大数据分析
  • 深圳快速网站制/学seo建网站
  • 网站的 规划与建设/天津网络广告公司
  • 海南省建设设厅官方网站/免费站长工具
  • 新手销售怎么和客户交流/惠州seo快速排名
  • 数据库对网站开发的作用/网站设计公司网站制作
  • 9夜夜做新郎网站/情感营销的十大案例
  • 如何制作网页网站/广告联盟接广告
  • MyBatis-Plus 通用 Service
  • pytorch学习笔记-自定义卷积
  • 力扣刷题(第九十九天)
  • 变频器实习DAY15
  • C++中new和delete的多重面孔:operator new、new operator与placement new解析
  • TDengine 转化函数 TO_TIMESTAMP 用户手册