首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙基础知识记录(二)

  • 25-04-18 21:08
  • 3376
  • 11578
juejin.cn

一、鸿蒙开发基础概念

(一)应用打包格式

鸿蒙应用打包后文件扩展名为.hap(HarmonyOS Ability Package),这是其标准包格式。此外,还有 HAR(Harmony Archive,静态共享包)和 HSP(Harmony Shared Package,动态共享包)。

  • HAR 可实现多个模块或工程共享 ArkUI 组件、资源等代码;
  • HSP 能共享代码和资源,需跟随宿主应用 APP 包发布,与宿主同进程且包名、生命周期相同。

(二)Ability

Ability 是应用或服务能力的抽象,分为 UIAbility 和 ExtensionAbility。

  • UIAbility 包含 UI 界面,用于和用户交互;ExtensionAbility 提供特定场景扩展能力 。开发时,UIAbility 通过在模块中右键选择 New > Ability 创建;
  • ExtensionAbility 在 Application 工程中,右键选择特定场景类型创建。

二、ArkUI框架核心特性

  1. 声明式组件化架构
  • 采用树形组件结构,通过布局组件(Row/Column/Flex等)与基础组件的灵活组合实现界面描述
  • 支持声明式编程范式,界面状态变更自动触发最小化渲染更新
  1. 智能渲染机制
  • 数据变更与视图更新解耦,通过标记脏组件(Mark Dirty)实现局部刷新
  • 弹性布局系统自动计算布局影响范围,避免全局重构
  1. 丰富布局体系
  • 提供6大类布局容器:
    ▶ 线性布局:Row/Column(横纵排列)
    ▶ 弹性布局:Flex(自适应伸缩)
    ▶ 复杂布局:Stack/RelativeContainer(层叠/相对定位)
    ▶ 列表布局:List(滚动列表)
    ▶ 网格布局:Grid(二维矩阵)
  • 支持响应式布局策略,自动适配多终端形态
  1. 性能优化体系
  • 轻量级渲染引擎,通过扁平化组件树结构降低渲染开销
  • 内置性能分析工具集(Profiler/Inspector),支持:
    ✓ 组件层级可视化分析
    ✓ 布局复杂度检测
    ✓ 渲染性能瓶颈定位
  1. 高效状态管理
  • 响应式数据绑定机制,实现状态变更到视图的精准同步
  • 智能脏检查策略,仅更新受影响的子组件树
  1. 开发友好特性
  • 支持DevEco Studio实时热重载
  • 提供丰富的UI组件库与动画系统
  • 兼容HarmonyOS分布式能力

三 、 跨设备通信的方式有哪些?

  1. 分布式软总线

    • 类似"设备间高速总线",无需Wi-Fi/蓝牙直接互联
    • 用途:文件传输、音视频通话、服务调用
  2. 蓝牙/Wi-Fi

    • 传统无线通信方式
    • 用途:传感器数据传输、近场设备联动
  3. 远程服务调用(RPC)

    • 跨设备执行原子性操作
    • 用途:支付、游戏联机、设备控制
  4. 统一消息系统

    • 跨设备消息中继
    • 用途:通知推送、状态同步

HarmonyOS跨设备通信技术全景图:

分层核心技术技术特点典型场景
底层协议HDF(硬件驱动框架)硬件能力抽象层手表控制手机摄像头
DistributedSoftBus设备间加密直连通道投屏/文件传输
系统能力Ability(分布式能力)FA/PA服务单元天气服务共享
DataBus(数据总线)实时发布-订阅模型协同编辑文档
高级协议RPC(远程过程调用)IDL接口定义跨设备服务跨设备支付
WECS(Web执行上下文)Web应用调用鸿蒙能力浏览器控制智能家居
连接方式WLAN/蓝牙/UWB多模通信融合智能家居组网
消息系统GlobalEventBus全局事件广播机制新消息跨设备提醒

四 、如何实现应用的多语言支持?

  1. 创建资源文件:为不同语言分别创建对应的资源文件,常用的格式为string.json 。在这些文件里,将应用中所有需要本地化的字符串进行定义。例如,创建一个英文的string.json文件,内容可能如下:

json
代码解读
复制代码
{ "welcome_message": "Welcome to our app", "button_text": "Click Me" }

再创建一个中文的string.json文件:

json
代码解读
复制代码
{ "welcome_message": "欢迎使用我们的应用", "button_text": "点击我" }
  1. 资源引用:在代码中,避免直接使用硬编码文本,而是通过资源 ID 来引用字符串。以 ArkTS 为例:
typescript
代码解读
复制代码
import resource from '@ohos.resource'; // 获取当前语言环境下的资源实例 let res = resource.createResourceManager(this.context); // 根据资源ID获取字符串 let welcomeMsg = res.getString('string.welcome_message');
  1. 系统设置适配:HarmonyOS 的应用具备自动适配系统语言设置的能力。当用户在系统设置中更改语言环境后,应用会自动加载与之对应的资源文件,无需额外手动干预,即可展示对应语言的文本内容。
  2. 动态切换语言:为了提供更好的用户体验,HarmonyOS 支持在应用运行时动态切换语言。在代码中,可以通过重新加载资源文件,并更新 UI 上的文本内容来实现。假设在界面中有一个切换语言的按钮,点击事件处理函数可如下:
typescript
代码解读
复制代码
import resource from '@ohos.resource'; import router from '@kit.ArkUI'; // 切换语言的函数 function switchLanguage(lang) { // 根据选择的语言重新创建资源管理器 let res = resource.createResourceManager(this.context, lang); // 重新获取字符串并更新UI,例如更新页面标题 let newTitle = res.getString('string.app_title'); // 假设存在更新页面标题的函数updatePageTitle updatePageTitle(newTitle); // 刷新页面其他需要更新的UI部分 router.reloadPage(); }

通过以上步骤,HarmonyOS 应用能够有效地实现多语言支持,为全球用户提供友好的使用体验。

注:本文转载自juejin.cn的90后晨仔的文章"https://juejin.cn/post/7474264487513882675"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

143
阅读
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top