HarmonyOS鸿蒙应用开发
鸿蒙应用开发
HiHi_Peter
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
鸿蒙第80篇 鸿蒙编辑器devEcoStudio断点使用
断点调试原创 2025-03-20 22:58:31 · 224 阅读 · 0 评论 -
79 Canvas绘制性能优化 离屏渲染
4需要注意的是要离瓶渲染看不见需要在onReady里面给显示出来,或者o n tou ch手指抬起来的时候。5 如果有图片编辑的话,图片渲染的时候可以单独开一个Worker线程。1 使用自定义容器NodeControler来实现画布的上树。2 单独创建一个组件,然后渲染到根结点中。3 单独创建的这个组件使用离瓶渲染。原创 2025-03-19 21:56:14 · 317 阅读 · 0 评论 -
78 鸿蒙应用开发代码规范
【级别】要求【描述】每个语句的变量声明都应只声明一个变量。这种方式更易添加变量声明,不用考虑将;变成,,以免引入错误。另外,每个语句只声明一个变量,用debugger逐个调试也很方便,而不是一次跳过所有变量。【反例】pointY = 0;【正例】原创 2025-03-11 00:39:55 · 1347 阅读 · 0 评论 -
77 鸿蒙TextArea文字粘贴到剪切板
【代码】77 鸿蒙TextArea文字粘贴到剪切板。原创 2025-03-10 23:37:10 · 147 阅读 · 0 评论 -
76 保存图片到沙箱 SaveButton组件
因为访问相册权限比较高,一种是向华为申请,比较慢,另外一种使用Savebutton组件。原创 2025-03-10 23:32:56 · 287 阅读 · 0 评论 -
75 鸿蒙ArkTS团队开发签名问题
组长配置签名,拉取代码,重新签名,提交代码的时候,签名文件不提交。直接把签名文件配置在项目中,签名配置引用项目中的文件。在华为官网创建团队,小组成员共用一个账号。原创 2025-03-10 23:26:21 · 345 阅读 · 0 评论 -
74 鸿蒙Charles抓包配置
备注:需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择 SSL proxy这样,对于该 Host 的所有 SSL 请求可以被截取到了。②在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。那么需要安装 Charles 的 CA 证书。原创 2025-03-10 23:20:47 · 691 阅读 · 0 评论 -
73 HMRouter路由系统第三方库
HMRouter依赖系统Navigation能力,所以必须在页面中定义一个容器@Entry@Componentbuild() {// @Entry中需要再套一层容器组件,Column或者StackColumn(){// 使用HMNavigation容器options: {})Navigation的系统属性通过modifier传递,部分modifier不支持的属性使用options设置使用标签定义拦截器,并实现接口使用标签定义生命周期处理器,并实现接口通过。原创 2025-03-10 23:15:11 · 1512 阅读 · 0 评论 -
71 Navgation和Navdestination官方推荐系统路由
创建路由文件文件profile目录下创建route_map.json 并且在module.json5里面添加路由表的配置。原创 2025-03-10 19:44:16 · 279 阅读 · 0 评论 -
68 图片轮播和图片列表联动且列表中选中的图片一直在屏幕中间
【代码】68 图片轮播和图片列表联动且列表中选中的图片一直在屏幕中间。原创 2025-03-09 23:11:23 · 263 阅读 · 0 评论 -
66 7种自适应能力
7种自适应能力原创 2025-03-09 22:32:30 · 262 阅读 · 0 评论 -
65 状态数据管理 V1和 V2的区别
Monitor用于监听V2状态变量的变化,搭配@Trace使用,可有深层监听的能力。@Watch用于监听V1状态变量的变化,具有监听状态变量本身和其第一层属性变化的能力。状态变量可观察到的变化会触发其@Watch监听事件。@ObservedV2本身无观察能力,仅代表当前class可被观察,如果要观察其属性,需要搭配@Trace使用。@Observed可观察第一层的属性,需要搭配@ObjectLink使用才能生效。V1装饰器@Track为精确观察,不使用则无法做到类属性的精准观察。但两者能力并不相同。原创 2025-03-09 21:55:04 · 943 阅读 · 0 评论 -
64 Canvas画布,制作一个画板
针对图片编辑的画布思路原创 2025-03-09 21:23:18 · 227 阅读 · 0 评论 -
63 动画
主要针对组件的属性,在变化过程中加入动画,全部附加在组件身上,例如组件透明度,平移,旋转,缩放等,使用事件或者监听等控制状态变量进行调控。// xxx.ets@Entry@Componentbuild() {Column() {} else {this.flag})duration: 2000,//时长,延时iterations: 3//播放几次playMode: PlayMode.Normal//模式,一次还是循环})})原创 2025-02-05 19:51:11 · 977 阅读 · 0 评论 -
62 页面之间的通信
【代码】62 页面之间的通信。原创 2024-09-06 19:30:00 · 171 阅读 · 0 评论 -
61@Entry 装饰的页面和 Navigation 组件里的页面区别
定义:是一个基本的页面,每一个页面都需要在 main_page.json 中声明路由:这种页面是路由的起点,通常用于展示应用的入口生命周期:具有通用的生命周期方法,如 @Entry 修饰的页面中的通用方法。原创 2024-09-06 06:30:00 · 271 阅读 · 0 评论 -
60 图文混排方案
方案二:富文本RichEditor支持图文混排和文本交互式编辑,通过addTextSpan()方法添加文本内容,通过addImageSpan()方法添加图片内容。方案一:轻量级Span&ImageSpan图文混排:可通过Text组件中嵌套ImageSpan子组件和Span子组件的方式,实现图文混排的方案。原创 2024-09-05 09:00:00 · 390 阅读 · 0 评论 -
59 ArkTS 与TS区别
ArkTS 是基于 TypeScript 开发的框架,但是有一些限制和差异。ArkTS 旨在提供更严格的类型检查和优化的代码性能,同时确保与 HarmonyOS 的开发环境和特性兼容。原创 2024-09-05 08:00:00 · 2165 阅读 · 0 评论 -
58 build()里面的规则
Component装饰的自定义组件,其 build() 函数下的根节点唯一且必要,可以为非容器组件。@Entry装饰的自定义组件,其 build() 函数下的根节点唯一且必要,且必须为容器组件。避免直接在 Text 组件内改变 count 的值。不允许调用没有用 @Builder 装饰的方法。不允许 console.info 之类的语句。ForEach 禁止作为根节点。不允许使用 switch 语法。不允许创建本地作用域。原创 2024-09-04 18:30:00 · 429 阅读 · 0 评论 -
57 解决内存泄漏
鸿蒙提供了开发者工具,其中包括性能分析和内存分析工具。使用这些工具来监测应用的内存使用情况,找到潜在的内存泄漏问题。避免在应用中持有全局引用,尤其是全局单例或静态变量。这些引用可能导致对象无法被垃圾回收,从而导致内存泄漏。运行应用并通过鸿蒙开发者工具的性能分析工具进行内存测试。通过模拟各种使用场景,找到潜在的内存泄漏问题。确保正确管理鸿蒙应用组件的生命周期。释放不再需要的资源,避免在组件销毁后仍然持有对它的引用。原创 2024-09-04 06:00:00 · 561 阅读 · 0 评论 -
56 鸿蒙开发中各种配置文件的作用
应用/服务支持通过ohpm来安装、共享、分发代码,管理项目的依赖关系。oh-package.json5格式遵循标准的ohpm规范。应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。Module的基本配置信息,包含Module名称、类型、描述、支持的设备类型等基本信息。应用的全局配置信息,包含应用的Bundle名称、开发厂商、版本号等基本信息。页面列表json,对应上面module.json5的pages字段。应用运行过程中所需的权限信息。特定设备类型的配置信息。原创 2024-09-03 18:00:00 · 472 阅读 · 0 评论 -
55 UIAbility应用组件的启动实例模式
当应用进程中该类型的UIAbility实例已经存在时,系统会复用该实例,而不是创建新的实例。例如,对于需要频繁切换的页面或功能,使用Singleton模式可以避免不必要的实例创建和销毁,从而提高应用的响应速度和性能。但是,每次创建新的实例之前,之前的实例都会被销毁。每次创建新的实例时,都会重新走一遍UIAbility的生命周期方法。与Multiton不同的是,创建新的实例时不会销毁之前的实例,所以在任务列表里可以看到多个实例。这意味着每次点击都会创建新的实例,并且每个实例都有自己的生命周期。原创 2024-09-03 06:00:00 · 495 阅读 · 0 评论 -
56 拍照
需要用到camera这个api。原创 2024-09-02 18:00:00 · 340 阅读 · 0 评论 -
55 扩展应用组件声明周期
onAddForm(want: Want) 使用方创建卡片时触发,提供方需要返回卡片数据绑定类 onCastToNormalForm(formId: string) 使用方将临时卡片转换为常态卡片触发,提供方需要做相应的处理 onUpdateForm(formId: string) 若卡片支持定时更新/定点更新/卡片使用方主动请求更新功能,则提供方需要重写该方法以支持数据更新 onChangeFormVisibility(newStatus: Record<string, number>)原创 2024-09-02 16:00:00 · 358 阅读 · 0 评论 -
54 清除缓存的三种方法
} // 获取沙箱路径。// 获取应用上下文。使用@ohos.file.fs (文件管理)模块的方法。原创 2024-09-02 11:28:03 · 3428 阅读 · 0 评论 -
53 性能优化方案
懒加载(forEach =>lazyForEach) 防抖(段时间内 多次触发 只执行最后一次) 减少滥用装饰器(数据变化 且 变化后影响页面) 布局结构不要滥嵌套 Row(){ } 合理使用异步让代码并行 多线程 封装组件 减少网络请求次数 合理使用底层能力(定位) 缓存数据(存储数据-首选项 persist 数据库) 减少应用启动时的初始化操作原创 2024-09-02 11:25:40 · 889 阅读 · 0 评论 -
52 项目中如何拆分HAR包
拆分HAR包,简而言之,就是将一个大型或复杂的HAR包(Harmony Archive,静态共享包)分解成多个较小的、功能单一的HAR包。这些较小的HAR包可以包含特定的代码、资源、库或配置文件,供不同的模块或项目使用。通过拆分HAR包,开发者可以更容易地管理和维护代码,降低项目的复杂性,提高开发效率,并且有助于实现代码的重用和共享。原创 2024-08-30 06:00:00 · 456 阅读 · 0 评论 -
51 Axios原理及其用法
在浏览器端,axios使用XMLHttpRequest对象或浏览器的fetch API来发送HTTP请求;在服务端,它使用原生的Node.js http模块。:xios提供了请求和响应拦截器,允许在请求或响应被发送到服务器或浏览器之前,对其进行一些预处理。是一个基于 promise 的网络请求库,可用于在浏览器和Node.js中发送异步HTTP请求。:axios可以捕获HTTP请求返回的错误状态码,并提供全局的错误处理方法。axios封装了请求和响应的细节。原创 2024-08-30 01:00:00 · 468 阅读 · 0 评论 -
50 ArkUI框架组件生命周期
onBackPress:当用户点击返回按钮时触发(页面特有)aboutToDisappear:组件即将析构销毁时触发。aboutToDisappear:组件即将析构销毁时触发。onCreate: UIAbility实例创建完成时触发。onDestroy: 在UIAbility实例销毁时触发。onPageShow:页面显示触发(页面特有)onPageHide:页面隐藏触发(页面特有)aboutToAppear:组件即将出现时触发。aboutToAppear:组件即将出现时触发。原创 2024-08-29 10:30:00 · 571 阅读 · 0 评论 -
49 数组常用的方法
filter筛选 reduce求和 map映射 forEach遍历 sort排序 join拼接 split分割 fill填充 concat连接合并数组。pop 尾删 push尾插 shift开头删除 unshift头插 splice任意删除,插入。原创 2024-08-29 09:00:00 · 154 阅读 · 0 评论 -
48 http是在主线程内还是另起一个线程,异步和TaskPool有什么区别
这样,你既可以享受异步编程带来的非阻塞优势,又可以利用任务池来管理并发任务,提高系统的性能和资源利用率。1/.HTTP请求与线程的关系. HTTP请求可以在主线程内执行,但这不推荐的,因为HTTP请求可能会涉及网络操作,这些操作是阻塞的,会导致主线程被挂起,从而影响到应用的响应性和用户体验。○ 因此,在鸿蒙应用中,更常见的做法是使用异步或多线程的方式来处理HTTP请求。● 任务池关注的是并发任务的管理和执行,它提供了一种机制来复用线程资源、限制并发线程数量,并通过队列来管理待执行的任务。原创 2024-08-29 06:00:00 · 391 阅读 · 0 评论 -
47 多线程和Promise区别
多线程主要用于提升程序的执行效率和系统资源的利用率,而Promise则更多地用于处理异步操作,使代码更加清晰和可维护。串行: 一件事做完 接着做一件事 => 优势: 有顺序 劣势: 效率低。并行: 同时做很多事 => 优势: 效率高 劣势: 获取结果麻烦。相同点: 都可以同时做事。原创 2024-08-29 01:00:00 · 521 阅读 · 0 评论 -
46 无渲染组件和无状态组件
总结来说,无渲染组件和无状态组件在鸿蒙系统中各自扮演着不同的角色。无渲染组件主要用于复用逻辑和功能,而不关心具体的UI实现;而无状态组件则专注于UI界面的渲染和展示,通过接收props来动态地呈现不同的内容。这两种组件的结合使用,可以使得鸿蒙系统的应用开发更加高效和灵活。在鸿蒙系统中,无渲染组件和无状态组件是两种不同类型的组件,它们各自具有特定的功能和用途。原创 2024-08-28 11:00:00 · 311 阅读 · 0 评论 -
45 Emitter跨线程通信
emitter.once(event: InnerEvent, callback: Callback<EventData>): void:单次订阅指定的事件,并在接收到该事件并执行完相应的回调函数后,自动取消订阅。emitter.off(eventId: number, callback: Callback<EventData>): void:取消针对该事件ID的订阅。({ eventId: ''}, 数据)原创 2024-08-28 10:00:00 · 340 阅读 · 0 评论 -
44 首选项通过什么方式存储?存在什么地方
首选项(Preferences)通过键值对(Key-Value)的形式存储数据,用于为应用提供轻量级的数据处理能力,并支持数据的持久化存储.默认存储位置为该应用的应用沙箱中。原创 2024-08-28 09:00:00 · 220 阅读 · 0 评论 -
43 鸿蒙组件之间如何通信
LocalStorage AppStorage PersistentStorage 首选项(flush) 数据库(goToNext())父子关系: @Prop @Link 回调函数 嵌套对象:@Observed @ObjectLink。父子孙: @Provide @Consume。是一种对象,用于在应用组件之间传递信息。emmit跨线程通信。原创 2024-08-28 08:00:00 · 307 阅读 · 0 评论 -
42 页面间传值方式
在实际开发中,应根据具体需求和场景选择合适的页面传值方法。如果需要传递的数据量较大或需要复杂的交互逻辑,建议使用router、emitter或IntentParams等方法;如果只是简单的数据共享或页面跳转,可以使用LocalStorage、EventHub或全局变量等方法。params: {value: 'test'} // 给新页面传递一个对象,key为value。url: "pages/[页面命名]", // 打开新页面。原创 2024-08-28 06:30:00 · 540 阅读 · 0 评论 -
41 ArkTS字符串常用方法
去除两端空格 分割 转大写 转小写 包含 找下标以固定元素开头 以固定元素结尾 找最后一个元素下标去除某一项/往前补充 后面补充 合并 截取/ 匹配 重复 替换。原创 2024-08-28 06:00:00 · 1508 阅读 · 0 评论 -
40 鸿蒙语音转文字使用
同意创建录音采集器 AudioCapture. 当我们开始长按的时候开始创建录音文件,用上下文找到文件目录fileDir+文件名得到文件的存储路径。然后在录音的同时将录音数据写入文件。在停止录音的时候需要返回文件的路劲 return this.filePath。因为在后面的录音转文字时,我们需要拿到这个文件 录音转文字。网络权限的话直接配置就好,但是这个还需要给个理由$string:Mic_reason. 配完还是不行 还需要配置{when ,在什么时候使用,还有ability 在哪个窗口使用}原创 2024-08-28 01:00:00 · 1006 阅读 · 0 评论 -
39 为什么Navigation路由跳转比router好
综上所述,鸿蒙中的Navigation组件在路由跳转⽅⾯相较于router模块具有更强⼤的功能、更⾼的灵活性 和更好的扩展性。特别是在多设备适配、动态加载和路由管理等⽅⾯,Navigation组件表现出了明显的 优势。因此,在开发鸿蒙应⽤时,建议使⽤Navigation组件进⾏⻚⾯跳转。在鸿蒙(HarmonyOS)中,使⽤Navigation进⾏路由跳转相较于router模块具有⼀些明显的优势和特。router模块虽然也⽀持跨设备的⻚⾯跳转,但在多设备适配⽅⾯可能不如Navigation组件那么直。原创 2024-08-27 20:00:00 · 733 阅读 · 0 评论
分享