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

最好的响应式网站淘宝 网站开发 退货

最好的响应式网站,淘宝 网站开发 退货,网站开发首选,新乡建设企业网站Choreographer 是 Android 系统中负责帧同步的核心组件#xff0c;它协调输入事件、动画和绘制任务#xff0c;以确保界面以固定频率#xff08;通常是每 16ms#xff0c;一帧#xff09;流畅渲染。通过管理 VSYNC 信号和调度任务#xff0c;Choreographer 是实现流畅 UI…Choreographer 是 Android 系统中负责帧同步的核心组件它协调输入事件、动画和绘制任务以确保界面以固定频率通常是每 16ms一帧流畅渲染。通过管理 VSYNC 信号和调度任务Choreographer 是实现流畅 UI 体验和高效资源利用的关键。 图片参考自UI Performance Rendering 以下是系统性的介绍结合了作用机制、源码解析以及典型应用场景。 Choreographer 的作用 帧同步管理 Choreographer 是 UI 渲染任务的中央调度器负责以帧为单位同步动画和绘制任务确保它们在 VSYNC 信号到达时运行。协调输入、动画和绘制 它按照固定顺序依次处理输入事件、动画逻辑和界面更新优化任务间的节奏防止任务冲突或不必要的渲染。减少资源浪费 通过将任务与屏幕刷新VSYNC同步避免了无效的重复绘制节省了 CPU 和 GPU 的资源。 Choreographer 的工作机制 VSYNC 信号监听 系统底层通过 FrameDisplayEventReceiver 捕获 VSYNC 信号并通知 Choreographer。回调机制 提供 postFrameCallback 方法允许开发者将任务加入帧调度队列任务会在下一帧按需执行。帧的分阶段处理 一帧通常分为以下阶段 Input输入处理分发触摸、键盘等输入事件。Animation动画更新执行动画计算和逻辑。Traversal界面遍历触发视图的测量、布局和绘制。 线程绑定 每个线程有一个独立的 Choreographer 实例通常主线程上的 Choreographer 是 UI 渲染的核心。 Choreographer 源码解析 以下是 Choreographer 的核心代码和机制分析。 1. 初始化 Choreographer 的构造方法如下 private Choreographer(Looper looper, int vsyncSource) {mLooper looper;mHandler new FrameHandler(looper);mDisplayEventReceiver new FrameDisplayEventReceiver(looper, vsyncSource);mCallbackQueues new CallbackQueue[CALLBACK_LAST 1];for (int i 0; i CALLBACK_LAST; i) {mCallbackQueues[i] new CallbackQueue();} }分析 mHandler基于传入的 Looper 创建用于任务调度。mDisplayEventReceiver监听 VSYNC 信号触发帧更新。mCallbackQueues维护不同类型的回调队列如输入、动画和绘制任务。 2. 注册帧回调 开发者可以通过 postFrameCallback 方法注册下一帧需要执行的任务 public void postFrameCallback(FrameCallback callback) {postFrameCallbackDelayed(callback, 0); }public void postFrameCallbackDelayed(FrameCallback callback, long delayMillis) {long now SystemClock.uptimeMillis();long dueTime now delayMillis;mCallbackQueues[CALLBACK_ANIMATION].addCallbackLocked(dueTime, callback, null);scheduleFrameLocked(now); }分析 mCallbackQueues 将任务加入 CALLBACK_ANIMATION 队列。scheduleFrameLocked 检查是否需要安排新的帧。 3. VSYNC 信号处理 VSYNC 信号通过 FrameDisplayEventReceiver 捕获触发帧调度 Override public void onVsync(long timestampNanos, int builtInDisplayId, int frame) {Message msg Message.obtain(mHandler, this::doFrame, timestampNanos);msg.setAsynchronous(true);mHandler.sendMessageAtTime(msg, timestampNanos / 1000000); }分析 onVsync 将信号包装成异步消息通过 Handler 提交到主线程。消息最终调用 doFrame启动任务回调。 4. 帧的处理doFrame doFrame 方法负责执行帧内的所有任务回调 void doFrame(long frameTimeNanos) {mFrameScheduled false;doCallbacks(CALLBACK_INPUT, frameTimeNanos);doCallbacks(CALLBACK_ANIMATION, frameTimeNanos);doCallbacks(CALLBACK_TRAVERSAL, frameTimeNanos); }分析 doCallbacks 按顺序执行输入、动画、布局绘制任务。每帧回调在帧时间戳frameTimeNanos下运行确保与屏幕刷新同步。 Choreographer 与其他组件的协作 InputEventReceiver 负责捕获触摸和键盘事件将输入事件调度到 Choreographer 的 CALLBACK_INPUT。ViewRootImpl 核心视图管理类依赖 Choreographer 触发测量、布局和绘制阶段。动画系统ValueAnimator/动画框架 动画更新依赖 CALLBACK_ANIMATION确保在 VSYNC 同步时平滑执行。 Choreographer 的应用场景 实现自定义动画 开发者可以通过 postFrameCallback 在下一帧执行自定义动画逻辑保持与系统的渲染节奏一致。 choreographer.postFrameCallback(frameTimeNanos - {// 自定义动画逻辑choreographer.postFrameCallback(this); });性能优化 使用工具如 Perfetto分析帧间隔定位卡顿原因。避免阻塞 CALLBACK_TRAVERSAL 队列提高帧渲染效率。 任务分阶段调度 在不同阶段安排任务确保关键操作在合适的时机执行。 总结 Choreographer 是 Android UI 渲染的核心通过监听 VSYNC 信号和分阶段调度任务它能够高效管理输入事件、动画和绘制任务保证帧同步和流畅的用户体验。深入理解其原理和实现可以帮助开发者优化 UI 性能设计更高效、更流畅的应用。
http://www.hkea.cn/news/14351242/

相关文章:

  • 网站cms系统排名wordpress install.php 空白
  • 一个阿里云怎么做两个网站吗商业网站建设定位
  • 那里做网站好十大暴利小型加工厂
  • 老板让做公司网站设计海外购物网站大全
  • 长春网站建设加q479185700网站建设的主要功能及定位
  • 网站title 在哪里设置建电子商务网站需要多少钱
  • 网站建设怎么外包好中小企业网上申报系统
  • 企业注册百家号可以做网站吗嵌入式开发工程师
  • 典当网站九江网站建设优化
  • 漯河市源汇区建设局网站11月70款国产网络游戏获批
  • 企业网站如何进行定位wordpress 加速会
  • 网站页面太多怎么做网站地图吉林省高等级公路建设局死人网站
  • 广东智能网站建设配件店面设计薪酬
  • 南城网站建设公司策划上海网站排名优化公司
  • 网站 302重定向 备案wordpress用户积分
  • 备案 网站信息 备注上海阔达网站建设公司
  • 企业网站建设教程 pdf新泰网页设计
  • 织梦做网站要多长时间wordpress搭建个人博客linux
  • 免费的网站建造wordpress主题摘要字数
  • 好看响应式网站模板深圳推广不动产可视化查询
  • 微信公众号开发网站建设建站公司获客成本
  • 高校校园网站建设项目的要求柳州柳北建设局网站
  • 网站建设丶金手指花总13镇江seo快速排名
  • 制作电商网站google开户
  • 创建大型网站微信公众号登录wordpress网站
  • 哪家网站建设公司比较好如何做一名合格的网站人
  • 河南省城乡和住房建设厅网站首页胶州网站搭建公司
  • 学包装设计网站市场营销渠道
  • 订货网站建设中国建筑集团网站
  • 太原企业网站排名网站维护报价表