HarmonyOS 与 Android、iOS 的核心区别详解(含代码对比)
目标:帮助你从开发视角快速理解鸿蒙、安卓和 iOS 的核心差异
适用版本:HarmonyOS 5.0.0 或以上
🧠 一、系统架构对比
项目 | Android | iOS | HarmonyOS(NEXT) |
---|---|---|---|
内核 | Linux Kernel | XNU | 鸿蒙微内核 |
应用模型 | Activity/Service | ViewController | UIAbility/ExtensionAbility |
编程语言 | Java/Kotlin | Swift/Objective-C | ArkTS(基于 TypeScript) |
应用打包 | APK | IPA | HAP(HarmonyOS Ability Package) |
系统能力调用 | 需申请权限 + 各类 Manager | 需申请权限 + Delegate | 原生系统能力统一封装,API 更轻量 |
🎯 二、UI 开发模型差异
Android 的 UI(Kotlin 示例)
val textView = TextView(this)
textView.text = "Hello Android"
layout.addView(textView)
iOS 的 UI(Swift 示例)
let label = UILabel()
label.text = "Hello iOS"
view.addSubview(label)
HarmonyOS 的 UI(ArkTS 示例)
@Entry
@Component
struct HelloPage {
build() {
Column() {
Text("Hello HarmonyOS")
.fontSize(24)
}
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
.width('100%')
.height('100%')
}
}
✅ 说明:
-
Android / iOS 多为命令式 UI 构建(addView / addSubview)
-
ArkTS 使用声明式 UI,更像 React/Vue,利于状态管理
🔗 三、应用生命周期模型对比
生命周期阶段 | Android | HarmonyOS(Stage) |
---|---|---|
启动 | onCreate() | onCreate() (UIAbility) |
页面展示 | onStart(), onResume() | onWindowStageCreate() |
页面挂起 | onPause(), onStop() | onWindowStageDestroy() |
销毁 | onDestroy() | onDestroy() |
🔍 你会发现,鸿蒙的 Stage 模型
更加聚焦 窗口级 UI 生命周期管理,支持多窗口/分布式迁移。
🧪 四、代码实战:生命周期日志打印(ArkTS)
import UIAbility from '@ohos.app.ability.UIAbility';
export default class EntryAbility extends UIAbility {
onCreate() {
console.info('🌟 EntryAbility - onCreate');
}
onWindowStageCreate(windowStage) {
console.info('🪟 UI 页面窗口创建');
}
onWindowStageDestroy() {
console.info('🧹 UI 页面窗口销毁');
}
onDestroy() {
console.info('🗑️ EntryAbility - onDestroy');
}
}
🧾 运行后可在 DevEco Studio 的 Logcat 中查看完整日志。
📊 五、语言层面差异简析
语言特性 | Kotlin | Swift | ArkTS |
---|---|---|---|
类型系统 | 强类型 + 空安全 | 强类型 + 可选类型 | 强类型 + 静态推导 + 响应式变量 |
状态管理 | 手动管理 | 状态绑定较少 | @State 、@Prop 自动响应更新 |
UI 渲染方式 | XML/Compose | UIKit/SwiftUI | ArkTS 声明式 UI + 数据绑定 |
✅ 六、小结
关键维度 | HarmonyOS 的优势 |
---|---|
多设备适配 | 原生支持多终端,多窗口 UI 架构 |
状态驱动 | ArkTS 模型天然支持响应式编程 |
开发一致性 | 组件、生命周期、系统能力统一封装 |
性能表现 | 去除冗余层级,ArkTS 更轻量 |
学习迁移 | Vue/React/Web 开发者可快速上手 |
📘 下一篇预告
第3篇|开发环境搭建:如何用 DevEco Studio 启动第一个 ArkTS 项目(含项目结构与常见报错)