鸿蒙应用的基本单元是Ability(能力):它是应用的功能模块,可以理解为“一个可以独立运行的单元”。理解Ability体系,是鸿蒙开发与安卓/iOS开发最大的思维差异。
什么是Ability
- Ability = 应用的功能单元(类组件);
- UIAbility:带界面的Ability(相当于一个“页面入口”);
- ExtensionAbility:无界面的能力(后台任务、卡片等);
- 一个应用可以有一个或多个Ability。
UIAbility与Page
UIAbility承载页面(Page):一个UIAbility可以有多个Page(页面);Page用@Entry修饰(入口页面);Ability生命周期(onCreate/onForeground/onBackground/onDestroy)与页面导航(router)配合。
Ability的启动
应用启动:拉起入口Ability;Ability间跳转:want(意图)拉起其他Ability(同应用或跨应用);单例/多例模式:Ability的启动模式配置。
与安卓Activity的区别
类似但更灵活:Ability可以跨设备迁移(分布式);能力可被其他应用复用(服务化);声明式UI与Ability的“能力化”设计,是鸿蒙的核心特色。
开发要点
模块化设计:按功能划分Ability;页面导航:router/pushUrl管理页面栈;生命周期管理:正确释放资源;配置:module.json5中声明Ability。
Ability是鸿蒙应用的“积木单元”:UIAbility管界面、ExtensionAbility管能力。理解Ability与Page的分工,鸿蒙应用的架构就清晰了。