以上为官方给出的运行期和编译期的关系图,从图中我们可以很清晰的看到各个组件对应的关系以及一个应用程序(Application)在创建之后所经历的一个过程,总结如下图所示:
一、流程简介
-
Application启动
- 当用户启动应用程序时,首先会创建并初始化一个Application实例。
- Application实例负责全局的资源管理、状态保存与恢复等。
-
AbilityStage创建
- 在Application启动后,系统会为其创建一个或多个AbilityStage实例。
- AbilityStage代表了应用程序的一个能力阶段,管理着应用程序的生命周期。
-
UIAbility创建
- 根据应用程序的需求,AbilityStage会创建并初始化一个或多个UIAbility实例。
- UIAbility是用于创建和管理用户界面的能力,它定义了应用程序的用户界面布局和交互逻辑。
-
WindowStage创建
- 当UIAbility需要显示用户界面时,它会请求系统为其创建一个WindowStage实例。
- WindowStage负责将UIAbility创建的用户界面显示在屏幕上,并处理用户的交互操作。
二、AbilityStage、UIAbility、WindowStage介绍
在Application启动之后会依次创建AbilityStage、UIAbility、WindowStage等组件,所以这里主要对比iOS系统对这三个组件进行逐一介绍。
-
AbilityStage(能力阶段)
-
组件说明:AbilityStage在HarmonyOS系统中代表应用程序的能力阶段,是应用程序生命周期的一部分。它管理着应用程序从启动到销毁的整个过程。
-
方法:虽然图片中未直接展示AbilityStage的方法,但通常能力阶段会包含如onCreate()、onStart()、onResume()、onPause()、onStop()和onDestroy()等方法,用于处理应用程序在不同状态下的行为。
- onCreate() :在应用程序启动时调用,用于进行初始化操作,如加载资源、创建UI等。
- 其他方法:onStart()、onResume()等通常表示应用程序进入可见或交互状态;onPause()、onStop()等表示应用程序进入不可见或后台状态;onDestroy()表示应用程序即将被销毁。
-
与iOS对比:iOS中的应用程序生命周期通常由UIApplication类管理,其方法如application:didFinishLaunchingWithOptions:、applicationWillEnterForeground:、applicationDidEnterBackground:、applicationWillTerminate:等,与AbilityStage中的方法类似,分别处理应用程序的启动、进入前台、进入后台和销毁等状态。
-
-
UIAbility(用户界面能力)
- 组件说明:UIAbility是HarmonyOS系统中用于创建和管理用户界面的能力。它允许开发者定义应用程序的用户界面布局、交互逻辑等。
- 方法:UIAbility通常包含一系列与用户界面交互相关的方法,如按钮点击事件处理、页面跳转逻辑等。这些方法在开发时用于实现具体的用户交互功能。
- 与iOS对比:iOS中的UIViewController类类似于UIAbility,用于管理用户界面的创建和交互。UIViewController提供了如viewDidLoad()、viewWillAppear:、viewDidAppear:、viewWillDisappear:和viewDidDisappear:等方法,用于处理用户界面的加载、显示、隐藏等状态变化。
-
WindowStage(窗口阶段)
-
组件说明:WindowStage在HarmonyOS系统中代表应用程序窗口的状态。它管理着窗口的显示、隐藏、激活和非激活等状态。
-
方法:
- onCreate() :在窗口创建时调用,用于进行窗口的初始化操作,如设置窗口属性、添加视图等。
- onForeground() :当窗口被激活并显示在前台时调用。
- onBackground() :当窗口被隐藏或置于后台时调用。
- onWindowStageWillDestroy() :在窗口即将被销毁前调用,用于进行清理操作。
- onWindowStageDestroy() :在窗口被销毁时调用。
-
与iOS对比:iOS中的UIWindow类类似于WindowStage,用于管理应用程序窗口的显示和隐藏。然而,iOS中的UIWindow通常不会直接处理窗口的激活和非激活状态,这些状态更多是由UIViewController和UIApplication类管理的。UIWindow提供了如makeKeyAndVisible()、hidden等属性和方法,用于控制窗口的显示和隐藏。
-
总结
- AbilityStage:在HarmonyOS中管理应用程序的生命周期,与iOS中的UIApplication类类似。
- UIAbility:在HarmonyOS中用于创建和管理用户界面,与iOS中的UIViewController类类似。
- WindowStage:在HarmonyOS中管理应用程序窗口的状态,与iOS中的UIWindow类在功能上有一定的相似性,但具体实现和用途有所不同。
需要注意的是,由于HarmonyOS和iOS是两个不同的操作系统,它们的组件和生命周期管理方式虽然有一些相似之处,但也存在显著的差异。因此,在开发时需要根据具体的操作系统和平台选择合适的组件和方法来实现所需的功能。