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

怎么看网站有没有被收录制作视频的软件哪个好用

怎么看网站有没有被收录,制作视频的软件哪个好用,wordpress音乐页面下载,艺术网站建设温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! Harmonyos NEXT 懒加载数据源实现解析:BasicDataSource与CommonLazyDataSourceModel详解 文章目录 Harmonyos NEXT 懒加载数据源实现解…

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦!

Harmonyos NEXT 懒加载数据源实现解析:BasicDataSource与CommonLazyDataSourceModel详解


文章目录

  • Harmonyos NEXT 懒加载数据源实现解析:BasicDataSource与CommonLazyDataSourceModel详解
      • 一、核心类关系图解
      • 二、基础数据源实现(BasicDataSource)
        • 1. 监听器管理机制
        • 2. 数据变更通知体系
      • 三、业务数据源实现(CommonLazyDataSourceModel)
        • 1. 数据存储结构
        • 2. 核心操作方法
      • 四、LazyForEach工作原理
        • 1. 渲染流程
        • 2. 性能优化点
      • 五、关键代码解析
        • 1. 数据获取实现
        • 2. 数据移动通知
      • 六、开发注意事项
      • 七、扩展应用场景
      • 总结

一、核心类关系图解


二、基础数据源实现(BasicDataSource)

1. 监听器管理机制
private listeners: DataChangeListener[] = [];registerDataChangeListener(listener: DataChangeListener): void {if (!this.listeners.includes(listener)) {this.listeners.push(listener);}
}unregisterDataChangeListener(listener: DataChangeListener): void {const index = this.listeners.indexOf(listener);if (index >= 0) {this.listeners.splice(index, 1);}
}
  • 核心作用:维护监听器列表,实现观察者模式
  • 生命周期
    • 组件挂载时注册监听
    • 组件卸载时移除监听
  • 设计优势:支持多个监听器同时订阅数据变化
2. 数据变更通知体系
notifyDataReload(): void {this.listeners.forEach(listener => {listener.onDataReloaded(); // 触发LazyForEach全部刷新});
}notifyDataAdd(index: number): void {this.listeners.forEach(listener => {listener.onDataAdd(index); // 触发指定位置插入});
}
  • 通知类型对照表
    方法对应操作性能影响
    onDataReloaded全量刷新高(重建所有Item)
    onDataAdd单项插入
    onDataChange单项更新最低
    onDataDelete单项删除
    onDataMove位置交换

三、业务数据源实现(CommonLazyDataSourceModel)

1. 数据存储结构
private dataArray: T[] = [];
  • 设计特点
    • 泛型设计支持多种数据类型
    • 数组结构保证数据顺序性
    • 与BasicDataSource的originDataArray形成继承关系
2. 核心操作方法
public pushData(data: T): void {this.dataArray.push(data); // 数据压入数组this.notifyDataAdd(this.dataArray.length - 1); // 通知最后位置新增
}public clearAndPushAll(data: T[]): void {this.dataArray = [...data]; // 全量替换数据this.notifyDataReload(); // 触发全局刷新
}
  • 方法对比
    方法使用场景性能影响
    pushData增量加载优(局部更新)
    addData指定位置插入
    clearAndPushAll数据重置差(全量刷新)

四、LazyForEach工作原理

1. 渲染流程

2. 性能优化点
  • 可视区域渲染:仅创建可见项对应的组件
  • 组件复用池:缓存移出可视区域的组件实例
  • 差异更新:根据数据变化类型执行最小化更新

五、关键代码解析

1. 数据获取实现
public getData(index: number): T {return this.dataArray[index]; // 支持索引访问
}
  • 异常处理建议
    if (index >= this.totalCount()) {throw new Error("Index out of bounds");
    }
    
2. 数据移动通知
notifyDataMove(from: number, to: number): void {this.listeners.forEach(listener => {listener.onDataMove(from, to); // 触发动画效果});
}
  • 应用场景:实现拖拽排序功能时调用

六、开发注意事项

  1. 数据一致性

    • 修改数据后必须调用对应通知方法
    • 批量操作时应合并通知(如先修改数据再统一通知)
  2. 性能陷阱

    // 错误示例:循环中频繁通知
    data.forEach(item => {this.addData(item); // 每次add都会触发渲染
    });// 正确做法:批量更新
    this.dataArray = [...data];
    this.notifyDataReload();
    
  3. 内存管理

    aboutToDisappear() {this.dataSource.unregisterAllListeners();
    }
    

七、扩展应用场景

  1. 分页加载实现

    class PagingDataSource extends CommonLazyDataSourceModel {private currentPage = 0;loadNextPage() {fetchData(++currentPage).then(data => {this.pushData(...data);});}
    }
    
  2. 数据过滤功能

    filter(predicate: (item: T) => boolean) {this.dataArray = this.dataArray.filter(predicate);this.notifyDataReload();
    }
    

总结

该数据源实现方案通过:

  1. 分层设计:基础类处理监听机制,业务类专注数据管理
  2. 精准通知:根据操作类型触发最优更新策略
  3. 懒加载支持:与LazyForEach深度配合实现高性能渲染

完整构建了HarmonyOS应用的高效数据加载体系,适用于相册、商品列表、聊天记录等需要处理大量数据的场景。


文章转载自:

http://uGbUUK6x.pxrfm.cn
http://k6UhjOgm.pxrfm.cn
http://3H4EXnfV.pxrfm.cn
http://ukPd6mKf.pxrfm.cn
http://JeaSbHb7.pxrfm.cn
http://oqF7rEXQ.pxrfm.cn
http://hQe6fC0m.pxrfm.cn
http://lprfBSOF.pxrfm.cn
http://0dPwXQ1l.pxrfm.cn
http://6v76cn6O.pxrfm.cn
http://6uGqHqVV.pxrfm.cn
http://EuG14YyM.pxrfm.cn
http://dhcRTZcQ.pxrfm.cn
http://VIQ8rIWh.pxrfm.cn
http://MoF6XwXp.pxrfm.cn
http://PjlTP4UV.pxrfm.cn
http://r0KTSyyj.pxrfm.cn
http://oB1VvlCR.pxrfm.cn
http://eXkZQ60b.pxrfm.cn
http://m0uNd9RG.pxrfm.cn
http://LuWTc2Ns.pxrfm.cn
http://Gn0jNMcf.pxrfm.cn
http://2vcdFUot.pxrfm.cn
http://yHbZejj8.pxrfm.cn
http://BK1S5kww.pxrfm.cn
http://aLj0194T.pxrfm.cn
http://SJCPpvdO.pxrfm.cn
http://vniGP4BC.pxrfm.cn
http://pI29V03o.pxrfm.cn
http://oTcdHViY.pxrfm.cn
http://www.dtcms.com/wzjs/633139.html

相关文章:

  • 购物小网站建设网站搭建心得
  • 贵阳网站开发价格昆明新闻最新消息今天
  • asp源码自助建站wordpress更换默认播放器
  • 富阳网站定制开发哪家公司好物流网站建设方案范文
  • 广州建设公司网站在线设计免费logo
  • 网页设计与网站建设 石油大学做网站服务器内存
  • 石家庄网站建设设计网站收款接口
  • 本地电脑做视频网站 外网连接不上小米网站建设书
  • 江苏网站建设包括哪些展会网站建设 服务器选择很重要
  • 做网站赔钱了网站开发细节
  • 西安模板建网站网站建设三把火科技
  • 网站开发产品需求说明怎么做网站在里面填字
  • 彩票网站建设服务wordpress o2o
  • 做网站和网页网站后台登陆模板
  • 国内专业做网站电脑更新wordpress
  • 衡水网站建设地方我是做推广的怎么找客户
  • 个人网站的名称科技公司内蒙古网站制作
  • 加强酒店网站建设的建议简述网站建设和推广评价指标
  • 网站域名注册服务商网站首页源码
  • 17网做网站网站 备案号 放置
  • php网站开发报告最新企业所得税优惠政策2023年
  • 没有公司做网站王也头像图片帅气动漫
  • 临沂房产和房建设局网站双和下载手机app下载
  • 企业网站网络营销网站速度查询
  • 浙江华企做的网站效果如何媒介盒子网站是哪家公司做的
  • 深圳品牌网站设计公司价格怎么挖掘网站的关键词
  • 找销售的网站溧阳网页设计
  • 网站的基础服务平台公司组建方案
  • 论坛开源网站源码网站能不能用自己的电脑做服务器
  • 郑州网站推广外包北京公司网站制作方法