写点什么

HarmonyOS(鸿蒙)——启动流程

作者:李子捌
  • 2021 年 12 月 28 日
  • 本文字数:1374 字

    阅读完需:约 5 分钟

HarmonyOS(鸿蒙)——启动流程

一、准备

1.1 创建项目

进入 HarmonyOS(鸿蒙)正式开发之前,可以通过一个简单的 HelloWorld 的示例代码来了解其运行时的相关流程。如下是通过 DevEco Studio 创建的一个简单 HelloWorld 示例代码结构,接下来会分析其启动流程。


1.2 运行项目

运行上面的 HelloWorld,展示效果如下所示:


二、分析启动流程

2.1 启动流程图

一个简单的 HarmonyOS(鸿蒙)HelloWorld 程序,其基本运行流程,可以分为如下几个阶段:


2.2 解析 config.json 文件

config.json 文件是 HarmonyOS(鸿蒙)应用程序的主要配置文件,其位于 entry -> src -> main -> config.json,配置文件分为三大块,具体的说明可以参考我的另一篇文件,《HarmonyOS(鸿蒙)——config.json详解》


2.2 初始化

初始化主要通过 config.json 的 module 下的 package 和 name 来定位类 com.example.demo.MyApplication.



MyApplication 的内容如下,它会做一些应用的初始化工作


package com.example.demo;
import ohos.aafwk.ability.AbilityPackage;
public class MyApplication extends AbilityPackage { @Override public void onInitialize() { super.onInitialize(); }}
复制代码


2.4 获取入口 Ability 全类名

入口 Ability 的全类名,也在 config.json 文件中进行配置



MainAbility 对应 config.json 中的 abilities 中的相关配置信息



MainAbility 的主要内容如下,主界面中会加载子界面,通过 super.setMainRoute(MainAbilitySlice.class.getName());的方式进行加载,关于页面的相关介绍可以查看我的另一篇文件《HarmonyOS(鸿蒙)—— Ability与页面》


package com.example.demo;
import com.example.demo.slice.MainAbilitySlice;import ohos.aafwk.ability.Ability;import ohos.aafwk.content.Intent;
public class MainAbility extends Ability { @Override public void onStart(Intent intent) { super.onStart(intent); super.setMainRoute(MainAbilitySlice.class.getName()); }}
复制代码


2.5 运行 Ability

这一步就是启动上面的类

2.6 运行 Ability 的子界面

MainAbility 运行后执行 onStart 方法会加载子页面,这里的子页面是 MainAbilitySlice,其主要内容如下所示。


package com.example.demo.slice;
import com.example.demo.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;
public class MainAbilitySlice extends AbilitySlice { @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); }
@Override public void onActive() { super.onActive(); }
@Override public void onForeground(Intent intent) { super.onForeground(intent); }}
复制代码


在 MainAbilitySlice 中我们发现,onStart 加载类相关 UI 配置,ResourceTable.Layout_ability_main,ResourceTable 是 HarmonyOS 应用程序启动时动态生成的常量类,它会给每一个 xml 等文件分配一个标志 ID。要是想查看这个类,可以运行应用程序后在 class 文件中查阅


2.7 加载 xml 文件,展示内容

关于子页面中的内容,均可以通过 xml 文件来进行配置,这种基于 xml 配置内容样式的方式也比较方便,易于统一管理和系统解析。



至此一个 HarmonyOS(鸿蒙)HelloWorld 程序的执行流程就这么多了。

发布于: 刚刚
用户头像

李子捌

关注

华为云享专家 2020.07.20 加入

公众号【李子捌】

评论

发布
暂无评论
HarmonyOS(鸿蒙)——启动流程