系列文章目录
鸿蒙开发-序言
https://blog.csdn.net/u013488266/article/details/135145031?spm=1001.2014.3001.5502
鸿蒙开发-工具
https://blog.csdn.net/u013488266/article/details/135157878?spm=1001.2014.3001.5502
鸿蒙开发-初体验
https://blog.csdn.net/u013488266/article/details/135203269
前言
本文记录鸿蒙应用的运行机制介绍,文中会设计很多概念性的知识,对接受者不是那么友好。但是作为一个专业的程序员,学习一门语言或者一种IT技能,对底层运行原理的理解是必不可少的。
举个简单的例子,学习过JAVA语言的同学都能用java语言开发很多应用,但是应用是如何运行的?运行变慢了,如何定位解决?这个时候如果你理解java运行的机制,理解java内存模型,理解java运行的虚拟机等等技术知识点,你就可以做到你的应用运行的更稳定、效率更高。
作为一个初学者,对一些的原理性的知识理解并不是一蹴而就的,就像软件迭代开发一样,随着学习的深入,对原理理解的精确性会不断回归。本文,我试图用简单易于理解的方式来阐述鸿蒙应用的运行机制,思路形成于文的时间会比较长。
一、应用模型
HarmonyOS为App提供的必备组件和运行机制。
1.应用模型构成
2.应用模型分类
FA模型已不再主推,后面重点分析Stage模型。
二、Stage模型
1.基本概念
-
UIAbility组件和ExtensionAbility组件
Stage模型提供了这两类组件,这两类组件支持面向对象的开发方式
-
UIAbility组件:包含UI界面用于和用户交互。UIAbility的生命周期只包含创建/销毁/前台/后台等状态。
-
ExtensionAbility组件:面向特定场景的应用组件。
-
-
WindowStage
该类提供了应用进程内窗口管理器的作用。UIAbility类实例与WindowStage类实例一一绑定。UIAbility通过WindowStage持有了一个窗口,该窗口为ArkUI提供了绘制区域。这里体现出Stage模型,应用组件与管理窗口的架构解耦。
-
Context
Context及其派生类向开发者提供在运行期可以调用的各种能力。UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。
-
AbilityStage
每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。每个在该HAP中定义的UIAbility类,在实例化后都会与该实例产生关联。开发者可以使用AbilityStage获取该HAP中UIAbility实例的运行时信息。
总结
本文记录了鸿蒙应用的运行原理,后面会重点分析Stage模型。