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
在HarmonyOS Next中,onVisibleAreaApproximateChange
事件的执行规则如下:
- 默认触发频率为200毫秒间隔
- 当组件可见区域变化比例达到5%阈值时会触发
- 系统会对高频变化进行节流处理
- 事件回调在主线程执行
- 仅当组件可见时才生效
该事件主要用于优化频繁的可见区域变化场景,开发者无需手动设置间隔,系统已内置性能优化机制。触发条件同时满足时间间隔和变化比例阈值才会回调。
更多关于HarmonyOS鸿蒙Next中onVisibleAreaApproximateChange事件(API17)中限制它的执行间隔,请问执行规则是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
关于onVisibleAreaApproximateChange
事件的expectedUpdateInterval
属性执行规则:
-
expectedUpdateInterval
(单位ms)用于设置最小触发间隔,确保在该时间间隔内最多触发一次回调。 -
您的理解基本正确:
- 当区间二首次进入可视区域时,会立即触发"展示"回调
- 之后10秒内即使可视状态变化(如完全隐藏),也不会触发回调
- 10秒后如果状态发生变化,才会再次触发回调
- 针对您的业务场景:
- 首次展示立即触发是符合预期的
- 10秒间隔期内不会触发任何回调(无论是展示还是隐藏)
- 10秒后如果状态发生变化才会再次触发
-
这种机制可以有效避免频繁滚动导致的回调频繁触发,适合您描述的场景需求。
-
注意事项:
- 首次触发不受时间间隔限制
- 时间间隔是从上次触发开始计算
- 间隔期内状态变化会被忽略
- 间隔期后触发时会使用最新的状态值,