HarmonyOS(鸿蒙)——启动流程

目录

一、准备

1.1 创建项目

1.2 运行项目

二、分析启动流程

2.1 启动流程图

2.2 解析config.json文件

2.2 初始化

2.4 获取入口Ability全类名

2.5 运行Ability

2.6 运行Ability的子界面

2.7 加载xml文件,展示内容

三、精选好文

一、准备

1.1 创建项目

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

HarmonyOS(鸿蒙)——启动流程

1.2 运行项目

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

HarmonyOS(鸿蒙)——启动流程

二、分析启动流程

2.1 启动流程图

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

HarmonyOS(鸿蒙)——启动流程

2.2 解析config.json文件

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

HarmonyOS(鸿蒙)——启动流程

2.2 初始化

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

HarmonyOS(鸿蒙)——启动流程

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文件中进行配置

HarmonyOS(鸿蒙)——启动流程

MainAbility对应config.json中的abilities中的相关配置信息HarmonyOS(鸿蒙)——启动流程

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

1package com.example.demo; 2 3import com.example.demo.slice.MainAbilitySlice; 4import ohos.aafwk.ability.Ability; 5import ohos.aafwk.content.Intent; 6 7public class MainAbility extends Ability { 8    @Override 9    public void onStart(Intent intent) {10        super.onStart(intent);11        super.setMainRoute(MainAbilitySlice.class.getName());12    }13}

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文件中查阅

HarmonyOS(鸿蒙)——启动流程

2.7 加载xml文件,展示内容

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

HarmonyOS(鸿蒙)——启动流程

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

三、精选好文

HarmonyOS(鸿蒙)DevEco Studio开发环境搭建

HarmonyOS(鸿蒙)开发一文入门

两个案例五分钟轻松入门Harmony(鸿蒙)开发

armonyOS与Android的全面对比

HarmonyOS(鸿蒙)全网最全资源汇总,吐血整理,赶紧收藏!

HarmonyOS(鸿蒙)–– Ability与页面

HarmonyOS(鸿蒙)––config.json详解

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。