赞
踩
这是一个仿聊天类应用,使用了静态布局搭建了不同的页面。为了优化内存与性能体验,在部分list场景使用了懒加载。
本示例用到了 图片处理能力接口@ohos.multimedia.image。
文件存储管理能力接口@ohos.fileio 。
使用说明
1.应用包含“聊天”、”通讯录“、”发现“、”我“四个主页面,使用Tabs组件实现模块的切换,“聊天”和“通讯录”模块使用了LazyForEach懒加载功能。
2.二级及以上页面左上角都有一个返回按钮。
3.聊天内容页面的下方输入框点击可以输入内容,表情的图标点击可以发送图片。
4.“发现”页面的“朋友圈”点击会进入“朋友圈”页面。
features/chatlist/src/main/ets // 列表类功能HAR共享包 |---/pages | |---ChatDetailPage.ets // 具体的某一聊天页面 | |---ChatListPage.ets // 整体聊天页面 |---/utils | |---Constants.ets // 封装只读常量 | |---DataFactory.ets // 封装对数据处理方法 | |---FriendMomentJsonUrl.ets // 封装朋友圈json地址 | |---Logger.ets // 封装整个日志 | |---PageConstants.ets // 封装页面地址只读常量 |---/view | |---ChatView.ets // 聊天列表每个单独模块 | |---OptLayoutChatView.ets // 可复用的列表模块 |---/viewmodel | |---BasicDataSource.ets // 封装朋友列表数据方法 | |---ChatListDataSource.ets // 封装聊天列表数据方法 | |---MsgBase.ets // 封装聊天列表对象方法 products/phone/entry/src/main/ets |---/entryability | |---EntryAbility.ts // 封装整个模块启用,监听Ability对应的窗口等逻辑 |---/pages | |---/workers | | |---worker.ts // worker线程逻辑处理 | |---Detail.ets // 聊天详情页面 | |---DiscoverPage.ets // 发现页面 | |---FriendsMomentsPage.ets // 朋友圈页面 | |---FriendsPage.ets // 通讯录页面 | |---FullImagePage.ets // 点击朋友圈图片放大图 | |---Index.ets // 首页 | |---SettingPage.ets // 我的页面 |---resources/images // 放置图片,icon资源等 |---/utils | |---Logger.ets // 封装整个日志 |---/view | |---CustomDialogExample.ets // 自定义功能弹窗页面 | |---TopBar.ets // 定义应用头部导航栏
懒加载:开发框架提供数据懒加载(LazyForEach组件)从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。
多线程:开发框架提供多线程并发能力,允许在同一时间段内同时执行多段代码,进行大量或调度点较分散的任务开发和处理。
1、定义要跳转子页面:在products/phone/entry/pages/index.ets中通过TabContent() 定义要跳转的子页面,源码参考
例如:跳转通讯录界面:TabContent() { FriendsPage() }。
2、使用LazyForEach数据懒加载对“聊天”和“通讯录”模块进行数据渲染:当LazyForEach在滚动容器中使用,框架会根据滚动容器可视区域按需创建组件,当组件划出可视区域外时,框架会进行组件销毁回收以降低内存占用。
3、页面之间的跳转通过在config.json中先配置好相关路由,并通过router.push()进行页面跳转,例如:跳转到搜索页面router.push({ url: ‘pages/SearchPage’ })。
4、页面组件加载前,通过fileio.readSync以同步的方式读取数据,在EntryAbility生命周期中获取对应的Want信息。
1.打开Chat工程,完成同步,并将工程编译模式调整为 release。
2.指定热点ap文件储存路径,并关闭混淆功能。即,在模块级 build-profile.json5 文件中,配置如下:
{ "apiType": "stageMode", "buildOption": { "arkOptions": { "apPath": "./modules.ap" } }, "buildOptionSet": [ { "name": "release", "arkOptions": { "obfuscation": { "ruleOptions": { "enable": false } } } } ], ... }
3.从设备端采集热点ap文件:
hdc shell param set ark.profile true
hdc file recv /data/local/ark-profile/100/{bundleName}/modules.ap {apPath}
4.将步骤3中获取到的ap文件,放入步骤2中指定的apPath路径。
5.按照步骤1中的release编译模式进行编译,并安装到设备,等待设备端侧AOT编译优化完成后,应用运行性能即可得到相应的提升。
不涉及。
不涉及。
1.本示例已适配API version 10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0Release)。
2.本示例需要使用DevEco Studio 版本号(4.0Release)及以上版本才可编译运行。
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/Solutions/IM/Chat/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
应用开发导读(ArkTS)
.……
系统定义
技术架构
技术特性
系统安全
…
《做鸿蒙应用开发到底学习些啥?》https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
基本概念
构建第一个ArkTS应用
.……
应用基础知识
配置文件
应用数据管理
应用安全管理
应用隐私保护
三方应用调用管控机制
资源分类与访问
学习ArkTS语言
.……
Ability开发
UI开发
公共事件与通知
窗口管理
媒体
安全
7.网络与链接
电话服务
数据管理
后台任务(Background Task)管理
设备管理
设备使用信息统计
DFX
国际化开发
折叠屏系列
.……
更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。