鸿蒙学习1概况

鸿蒙学习1相关概念

前言

有时间多看官网,官网的才是一手资料。

对比其他语言,以前学起来官网都在国外,不是打开不流畅,就是外语不精通。鸿蒙官网,母语学习自带buf,你懂的。

------以前是没机会,现在想做个好人

为什么刚开始学习就看概念,不应该是敲第一行代码么。没错。我是先把官网的第一课学了,并且通过了基础认证才想着写帖子总结下的。所以对于小白,还是可以先看官网的第一课的。非常基础的课程。

毕竟,一开始没事瞎看看的。这不是裸辞在家,才有空写帖子呀。

全局思维从整体看 鸿蒙应用。Stage模型概念清晰且重要

相关概念

Stage 模型

Stage 模型

从官网搬过来的

1. AbilityStage
  • 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。
  • AbilityStage与Module一一对应
2. UIAbility组件和ExtensionAbility组

Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。

UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。

UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口。

一个应用可以包含一个或多个UIAbility组件。例如,在支付应用中,可以将入口功能和收付款功能分别配置为独立的UIAbility。

UIAbility的设计理念:

  1. 原生支持应用组件级的跨端迁移和多端协同。
  2. 支持多设备和多窗口形态。

图中 UIAbility:page 1:N 的概念,类似。android的 单activity,多fragment应用。android这方面做的不好,开发者也没那个功夫搞单activity应用。

● 如果开发者希望在任务视图中看到一个任务,则建议使用一个UIAbility,多个页面的方式。

● 如果开发者希望在任务视图中看到多个任务,或者需要同时开启多个窗口,则建议使用多个UIAbility开发不同的模块功能。

3. WindowStage

类似Android 的window

每个UIAbility类实例都会与一个WindowStage类实例绑定,WindowStage类起到了应用进程内窗口管理器的作用,它包含一个主窗口。也就是说,UIAbility通过WindowStage持有了一个窗口,该窗口为ArkUI提供了绘制区域。

4. Context

在Stage模型上,Context及其派生类向开发者提供在运行期可以调用的各种能力。UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。

各类Context的持有关系

复制代码
State
     -Module(模块-对应Hap包)
         -ability(应用服务入口)
            -pages(页面)
              -component(自定义组件)
            -resources(资源)
事件传递

UIAbility和Page交互

UIAbility组件与UI的数据同步
  • EventHub进行数据通信

    • 事件需要先订阅后发布,订阅者收到消息后进行处理。
  • globalThis进行数据同步

    • ArkTS引擎实例内部的一个全局对象,在ArkTS引擎实例内部都能访问
    • 使用globalThis时需要避免存放相同名称的对象。例如AbilityA和AbilityB可以使用globalThis共享数据,在存放相同名称的对象时,先存放的对象会被后存放的对象覆盖。
  • AppStorage/LocalStorage进行数据同步

    • 可用于实现应用级别和UIAbility级别的数据同步
UIAbility组件间交互(设备内)
进程模型
  • 应用中(同一包名)的所有UIAbility运行在同一个独立进程中。
  • WebView拥有独立的渲染进程。
  • CES(Common Event Service,公共事件服务)
    • 系统公共事件和自定义公共事件
      • 系统公共事件 只有系统应用和系统服务才能发布,例如HAP安装,更新,卸载等公共事件
    • 三种事件类型
      • 无序公共事件
      • 有序公共事件
      • 粘性公共事件 发送粘性事件必须是系统应用或系统服务,且需要申请ohos.permission.COMMONEVENT_STICKY权限
    • 订阅方式 两种 subscriber
      • 动态订阅
      • 静态订阅
    • 发布事件 publish
线程模型
复制代码
* 主线程
* 子线程
	* Worker 最多8个
	* TaskPool 线程池
* 线程间通信
	* Emitter
	* Worker
	* globalThis
相关推荐
程序员潘Sir13 小时前
鸿蒙应用开发从入门到实战(六):ArkTS声明式UI和组件化
harmonyos·鸿蒙
猫林老师15 小时前
HarmonyOS数据持久化:Preferences轻量级存储实战
华为·harmonyos
Devil枫19 小时前
鸿蒙深链落地实战:从安全解析到异常兜底的全链路设计
安全·华为·harmonyos
广州腾科助你拿下华为认证20 小时前
华为考试:HCIE数通考试难度分析
大数据·华为
与天仙漫步星海20 小时前
华为基本命令
华为
低调小一1 天前
Android传统开发 vs Android Compose vs HarmonyOS ArkUI 对照表
android·华为·harmonyos
猛码Memmat1 天前
华为HarmonyOS开发文档
华为·harmonyos
流影ng1 天前
【HarmonyOS】MVVM与三层架构
华为·架构·harmonyos
爱笑的眼睛111 天前
HarmonyOS Stage 模型与 ArkUI 声明式开发深度实践:构建高效稳定的应用
华为·harmonyos