HarmonyOS鸿蒙Next中onVisibleAreaApproximateChange事件(API17)中限制它的执行间隔,请问执行规则是什么?

HarmonyOS鸿蒙Next中onVisibleAreaApproximateChange事件(API17)中限制它的执行间隔,请问执行规则是什么?

onVisibleAreaApproximateChange事件(API17)中expectedUpdateInterval属性限制它的执行间隔的执行规则是什么样的?

通过下面的代码,我的理解是:

我从区间一滑动到区间二,这个时候应该在日志中输出‘展示’,但是加了个10s的延迟,所以10s后才输出‘展示’,再继续滑动到区间三,把区间二完全隐藏,这个时候也不是立刻输出‘隐藏’,而是有10s的延迟后再输出‘隐藏’;请问是这样理解的吗?

但是现在我有一个业务场景,我想要实现,如果区间二展示出来了,就立刻输出一次展示,这个时候添加10s的延迟,这个期间无论区间二是展示还是隐藏,日志中什么都不输出,10s后继续日志正常输出,请问这种场景可以用onVisibleAreaApproximateChange事件实现吗?

```typescript
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  build() {
    Scroll() {
      Column() {
        Column() {
          Text('区间一')
        }.width('100%').height(1000).backgroundColor('#fff')

        Column() {
          Text('区间二')
        }.width('100%').height(100).backgroundColor('#857').onVisibleAreaApproximateChange({ ratios: [0.0, 1.0], expectedUpdateInterval: 10000 }, (isExpanding: boolean, currentRatio: number) => {
          if (isExpanding) {
            console.info('ztq', `展示`)
          } else {
            console.info('ztq', `隐藏`)
          }
        })

        Column() {
          Text('区间三')
        }.width('100%').height(1000).backgroundColor('#555')
      }
    }
  }
}

更多关于HarmonyOS鸿蒙Next中onVisibleAreaApproximateChange事件(API17)中限制它的执行间隔,请问执行规则是什么?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,onVisibleAreaApproximateChange事件的执行规则如下:

  1. 默认触发频率为200毫秒间隔
  2. 当组件可见区域变化比例达到5%阈值时会触发
  3. 系统会对高频变化进行节流处理
  4. 事件回调在主线程执行
  5. 仅当组件可见时才生效

该事件主要用于优化频繁的可见区域变化场景,开发者无需手动设置间隔,系统已内置性能优化机制。触发条件同时满足时间间隔和变化比例阈值才会回调。

更多关于HarmonyOS鸿蒙Next中onVisibleAreaApproximateChange事件(API17)中限制它的执行间隔,请问执行规则是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


关于onVisibleAreaApproximateChange事件的expectedUpdateInterval属性执行规则:

  1. expectedUpdateInterval(单位ms)用于设置最小触发间隔,确保在该时间间隔内最多触发一次回调。

  2. 您的理解基本正确:

  • 当区间二首次进入可视区域时,会立即触发"展示"回调
  • 之后10秒内即使可视状态变化(如完全隐藏),也不会触发回调
  • 10秒后如果状态发生变化,才会再次触发回调
  1. 针对您的业务场景:
  • 首次展示立即触发是符合预期的
  • 10秒间隔期内不会触发任何回调(无论是展示还是隐藏)
  • 10秒后如果状态发生变化才会再次触发
  1. 这种机制可以有效避免频繁滚动导致的回调频繁触发,适合您描述的场景需求。

  2. 注意事项:

  • 首次触发不受时间间隔限制
  • 时间间隔是从上次触发开始计算
  • 间隔期内状态变化会被忽略
  • 间隔期后触发时会使用最新的状态值,
回到顶部