数月前,本人基于 OpenAtom OpenHarmony(以下简称“OpenHarmony”) v4.0 Release 源码(https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/sourcecode-acquire.md#https://openharmony.gitee.com),对应用进程初始化后 MainThread 初始化及核心API调用 (如AttachApplication、LaunchApplication、LaunchAbility) 的过程做了分析和总结,同时绘制了进程间切换逻辑以及核心API调用逻辑的时序图,特分享出来,供大家加深对HarmonyOS开发和OpenHarmony开发的认识和源码的理解。
应用启动流程的核心类须知:
- AppMgrService 是应用管理服务主线程类,实现了 IPC 调用 IAppMgr 的接口,并通过 AMSEventHandler 将进程内各类事件及任务发送到主线程。
- AppRunningManager 记录了应用的信息、应用的运行状态、进程信息等,内部持有了模块运行信息列表,应用第一次启动时,会先创建。
- AppSpawn 是 app 孵化器,通过监听本地 socket,接收客户端的请求消息。创建 Ability 应用所在进程,为 Ability 应用设置相应的权限,并预加载一些通用的模块。
- AbilityLoader 负责注册和加载开发者 Ability 模块。开发者开发的 Ability 先调用 AbilityLoader 的注册接口注册到框架中,接着 Ability 启动时会被实例化。
- AbilityManager 负责 AbilityKit 和 Ability 管理服务进行 IPC 的通信。
- MainThread 是应用进程的核心类。应用进程内各类事件及任务通过 MainThread 中 mainHandler 投递到主线程并调用 MainThread 中的方法执行。
- AbilityThread 是应用线程的核心类,是操作各种 Ability 生命周期及方法的入口。
代码分析
后
期
补
上
......
总结-时序图