HarmonyOS 鸿蒙Next中什么是显示同步对象?显示同步对象的使用场景有哪些?

HarmonyOS 鸿蒙Next中什么是显示同步对象?显示同步对象的使用场景有哪些?

private backDisplaySyncSlow: displaySync.DisplaySync | undefined = undefined;
private drawFrame: (value: displaySync.IntervalInfo) => void = (value: displaySync.IntervalInfo) => {
  if (this.imageRotate >= 360 ) {
    this.imageRotate = 0;
  }
  this.imageRotate += 1;
};
animationFun() {
  if (this.isPlay) {
    this.backDisplaySyncSlow?.start();
  } else {
    this.backDisplaySyncSlow?.stop();
  }
}

aboutToAppear() {
  let range : ExpectedFrameRateRange = {
    expected: 30,
    min: 0,
    max: 30
  };

  this.backDisplaySyncSlow = displaySync.create();
  this.backDisplaySyncSlow.setExpectedFrameRateRange(range);
  this.backDisplaySyncSlow.on('frame', this.drawFrame);
}

更多关于HarmonyOS 鸿蒙Next中什么是显示同步对象?显示同步对象的使用场景有哪些?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

楼主参考一下看对你有没有帮助
displaySync.DisplaySync 是 一个显示同步计时器,其核心作用是:

按照设备屏幕的刷新频率(如 60Hz、30Hz 等)周期性触发回调(on(‘frame’))来驱动绘制或逻辑更新。

它的原理类似于浏览器中的 requestAnimationFrame 或 Android 中的 Choreographer。

特点:

与屏幕刷新同步(避免撕裂、卡顿)
[@ohos.graphics.displaySync (可变帧率)-ArkTS API-ArkGraphics 2D(方舟2D图形服务)-图形 - 华为HarmonyOS开发者](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-displaysync#onframe)

cke_1018.png

更多关于HarmonyOS 鸿蒙Next中什么是显示同步对象?显示同步对象的使用场景有哪些?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


功能:创建并配置一个显示同步对象,用于控制帧率并触发帧绘制事件
目的:实现自定义帧率管理及同步渲染逻辑,确保动画或图形更新与屏幕刷新率匹配
使用场景:

  • 需要精确控制游戏/动画渲染帧率的场景
  • AR/VR等对显示同步要求较高的应用
  • 需要降低帧率节省功耗的后台运行场景

主要逻辑:

帧率范围配置

  • 创建 ExpectedFrameRateRange 对象,设置:
    • expected: 30:目标理想帧率(30fps)
    • min: 0:允许最低帧率为0(不限制下限)
    • max: 30:强制上限为30fps
  • 通过结构体字面量语法初始化,符合ArkTS的类型推断特性

显示同步对象创建

  • 调用 displaySync.create() 创建实例
  • 赋值给 backDisplaySyncSlow 成员变量,表明这是慢速显示同步通道
  • 使用HarmonyOS图形子系统能力,对接底层显示服务

帧率策略应用

  • 通过 setExpectedFrameRateRange 注入配置
  • 系统将根据范围自动选择最优帧率:
    • 优先满足 expected
    • 根据系统负载动态调整,但保证不超过 max
    • 低于 min 值时可能触发降级机制

事件监听绑定

  • 通过 on('frame') 注册帧回调
  • 每当系统准备绘制新帧时,自动触发 drawFrame 方法
  • 采用观察者模式实现渲染时序控制,符合ArkUI事件驱动特性

框架特性结合:

  • 使用HarmonyOS的 displaySync 系统能力实现跨平台显示同步
  • 通过ArkTS的类成员变量(this.backDisplaySyncSlow)管理对象生命周期
  • 事件回调机制与ArkUI的渲染管线深度集成,确保线程安全

在HarmonyOS鸿蒙Next中,显示同步对象(Display Sync Object)是用于图形渲染和显示同步的机制。它协调GPU渲染与屏幕刷新,确保画面流畅无撕裂。主要应用于需要帧率同步的场景,如游戏、视频播放或UI动画。通过Vsync信号同步,避免画面卡顿或撕裂。开发者可通过ArkUI的渲染控制接口使用该功能。

在HarmonyOS Next中,显示同步对象(DisplaySync)是用于协调应用渲染帧率与设备屏幕刷新率的机制。它通过监听VSync信号来触发回调,确保动画/渲染与屏幕刷新保持同步。

主要使用场景包括:

  1. 动画渲染 - 如示例中的旋转动画,通过DisplaySync保证动画流畅不卡顿
  2. 游戏开发 - 维持稳定的帧率输出
  3. 视频播放 - 保持视频帧与显示刷新同步
  4. UI特效 - 实现流畅的转场和交互效果

示例代码展示了典型用法:

  1. 创建DisplaySync对象
  2. 设置期望帧率范围(30fps)
  3. 注册帧回调函数(drawFrame)
  4. 通过start/stop控制动画启停

这种机制能有效避免画面撕裂、卡顿等问题,提升视觉体验。开发者只需关注帧内容更新,系统会自动处理同步问题。

回到顶部