鸿蒙开发者的黄金时代

举报
黄生 发表于 2026/10/23 13:10:45 2026/10/23
【摘要】 有了AI加持,可以说是鸿蒙开发者的黄金时代来临了最近下载了最新的 DevEco Studio 26.0.0 Release,同时利用其自带的node用管理员身份安装了code和clinpm install -g @deveco/deveco-codenpm install -g @deveco/deveco-cli新建了一个项目,还没有做自己的项目,自动生成的Hello World样例项目。...

有了AI加持,可以说是鸿蒙开发者的黄金时代来临了
最近下载了最新的 DevEco Studio 26.0.0 Release,同时利用其自带的node用管理员身份安装了code和cli

npm install -g @deveco/deveco-code
npm install -g @deveco/deveco-cli

新建了一个项目,还没有做自己的项目,自动生成的Hello World样例项目。让AI给解读了一下,对于新手,真的是非常友好了,知识的获取上升了一个大大的台阶。

01 Index.ets

解读此文件 然后@添加上下文,即添加项目中的index.ets文件

entry\src\main\ets\pages\Index.ets是一个 HarmonyOS ArkTS 页面组件,是应用的入口页面。以下是逐段解析:


1. 装饰器声明(第 1-2 行)

@Entry
@Component
struct Index {
装饰器 作用
@Entry 标记此组件为页面入口,即应用的首页/根组件
@Component 声明这是一个 ArkUI 自定义组件

struct Index 是组件名,HarmonyOS 中组件使用 struct 而非 class 定义。


2. 状态管理(第 4 行)

@State message: string = 'Hello World';
  • @State:响应式状态变量。当 message 的值发生变化时,UI 会自动重新渲染。
  • 初始值为 'Hello World'。

3. UI 构建(第 6-22 行)

build() 是 ArkUI 组件的必须方法,用于声明 UI 结构:

RelativeContainer (相对布局容器)
  └── Text (文本组件)
        ├── .id('HelloWorld')          → 组件唯一标识
        ├── .fontSize($r(...))          → 字体大小引用资源
        ├── .fontWeight(Bold)           → 粗体
        ├── .alignRules(...)            → 居中对齐规则
        └── .onClick(...)               → 点击事件

关键细节:

  • RelativeContainer(第 7 行):相对布局容器,子组件通过锚点规则定位。容器本身设置了 height('100%') 和 width('100%'),即撑满整个屏幕。

  • Text(this.message)(第 8 行):显示状态变量 message 的文本内容。

  • .fontSize($r('app.float.page_text_font_size'))(第 10 行):使用 资源引用 $r() 从资源文件中读取字体大小,而非硬编码。这便于多语言/多设备适配。

  • .alignRules({...})(第 12-15 行):在 RelativeContainer 中的对齐规则:

    • center → 垂直方向居中(锚点为容器本身 __container__)
    • middle → 水平方向居中
    • 效果:文本在屏幕正中央显示
  • .onClick()(第 16-18 行):点击文本时,将 message 从 'Hello World' 改为 'Welcome'。由于 @State 的响应式特性,UI 会自动更新显示新文本。


4. 运行时行为总结

应用启动
  → 显示 "Hello World"(居中、粗体)
  → 用户点击文本
  → 文本变为 "Welcome"(自动刷新 UI)

5. 架构特点

特性 说明
声明式 UI 使用 build() 声明 UI 结构,非命令式编程
响应式状态 @State 驱动 UI 自动更新
资源化配置 字体大小通过 $r() 引用资源,支持多设备适配
相对布局 使用 RelativeContainer + alignRules 实现居中

这是 HarmonyOS DevEco Studio 生成的默认模板入口页面,结构简洁,展示了 ArkUI 的核心范式:声明式 UI + 响应式状态驱动。

02 EntryAbility.ets

继续另外一个文件

tool: builtin_read_file
result: ["entry\\src\\main\\ets\\entryability\\EntryAbility.ets"]

EntryAbility.ets是应用的 Ability 生命周期管理类,是 HarmonyOS 应用的核心入口之一,负责管理应用的生命周期、窗口加载和配置。以下是逐段解析:


1. 导入声明(第 1-3 行)

import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
导入项 来源 Kit 用途
UIAbility @kit.AbilityKit Ability 基类,提供生命周期回调
Want @kit.AbilityKit 启动参数载体,传递跨组件/跨应用数据
AbilityConstant @kit.AbilityKit 启动模式等常量定义
ConfigurationConstant @kit.AbilityKit 配置常量(如颜色模式)
hilog @kit.PerformanceAnalysisKit 统一日志工具,用于性能分析和调试
window @kit.ArkUI 窗口管理模块

2. 日志域常量(第 5 行)

const DOMAIN = 0x0000;

hilog 要求一个十六进制 日志域标识(0x0000~0xFFFF),用于过滤和分类日志输出。此处使用默认值 0x0000。


3. 类定义(第 7 行)

export default class EntryAbility extends UIAbility {
  • 继承 UIAbility,获得完整的 UI Ability 生命周期回调。
  • export default:作为模块默认导出,供 module.json5 中配置引用。

4. 生命周期回调(6 个阶段)

HarmonyOS UIAbility 生命周期如下:

应用启动
  │
  ├─→ onCreate()        Ability 创建(非UI)
  │     └─ 日志: "Ability onCreate"
  │
  ├─→ onWindowStageCreate()  窗口创建(加载UI)
  │     └─ 加载页面 pages/Index
  │     └─ 设置颜色模式
  │
  ├─→ onForeground()    切到前台
  │     └─ 日志: "Ability onForeground"
  │
  ├─→ onBackground()    切到后台
  │     └─ 日志: "Ability onBackground"
  │
  ├─→ onWindowStageDestroy()  窗口销毁
  │     └─ 日志: "Ability onWindowStageDestroy"
  │
  └─→ onDestroy()       Ability 销毁
        └─ 日志: "Ability onDestroy"

4.1 onCreate(第 8-10 行)

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void
  • 时机:Ability 实例创建时调用(早于窗口创建)。
  • 参数:
    • want:启动意图,可携带来自其他 Ability/应用传递的参数。
    • launchParam:启动模式参数(如 DISTRIBUTED、STANDARD 等)。
  • 当前行为:仅打印日志。

4.2 onDestroy(第 12-14 行)

  • 时机:Ability 被销毁时调用,用于释放资源。
  • 当前行为:仅打印日志。

4.3 onWindowStageCreate(第 16-33 行)⭐ 核心方法

onWindowStageCreate(windowStage: window.WindowStage): void
  • 时机:窗口舞台创建时调用,这是加载 UI 页面的关键时机。

操作一:加载入口页面(第 20-26 行)

windowStage.loadContent('pages/Index', (err) => { ... });
  • 将 pages/Index(即前面分析的 Index.ets)加载到窗口中。
  • 回调中检查 err.code:失败则打印错误日志并 return,成功则打印确认日志。

操作二:设置颜色模式(第 28-32 行)

this.context.getApplicationContext().setColorMode(
  ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET
);
  • COLOR_MODE_NOT_SET:不强制设置颜色模式,跟随系统设置(浅色/深色/自动)。
  • 使用 try-catch 包裹,防止设置失败导致崩溃。

4.4 onWindowStageDestroy(第 35-38 行)

  • 时机:窗口舞台销毁时调用,用于释放 UI 相关资源。
  • 当前行为:仅打印日志。

4.5 onForeground(第 40-43 行)

  • 时机:Ability 从后台切换到前台(用户重新可见应用)。
  • 当前行为:仅打印日志。

4.6 onBackground(第 45-48 行)

  • 时机:Ability 从前台切换到后台(如用户按 Home 键、切换到其他应用)。
  • 当前行为:仅打印日志。

5. 完整生命周期流转图

┌──────────────────────────────────────────────────┐
│              UIAbility 生命周期                    │
│                                                    │
│  onCreate ──→ onWindowStageCreate ──→ onForeground │
│                    │                    │          │
│                    │  loadContent       │  (前台运行)│
│                    │  ('pages/Index')   │          │
│                    │                    ↓          │
│                    │              onBackground     │
│                    │                    │          │
│                    │              onForeground ←───┘  (可往返切换)
│                    │                    │          │
│                    ↓                    ↓          │
│         onWindowStageDestroy ←────────────────     │
│                    │                               │
│                    ↓                               │
│              onDestroy                             │
└──────────────────────────────────────────────────┘

6. 架构特点总结

特性 说明
标准模板 DevEco Studio 生成的默认 EntryAbility,未做业务定制
日志驱动 所有生命周期回调均通过 hilog 输出日志,便于调试追踪
页面加载 onWindowStageCreate 中加载 pages/Index 作为入口页
颜色模式 设为 COLOR_MODE_NOT_SET,跟随系统深浅色设置
错误处理 loadContent 回调 + setColorMode 的 try-catch,保证健壮性
生命周期完整 实现了全部 6 个回调,覆盖创建→前台→后台→销毁全流程

此文件是 HarmonyOS 应用的 Ability 层入口,与 Index.ets(UI 层入口)配合,共同构成应用启动的完整链路:EntryAbility.onCreate → onWindowStageCreate → loadContent('pages/Index') → Index.build()。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。