HarmonyOS 鸿蒙Next:module_entry_entry.cj和ability_mainability_entry.cj什么时候调用?被谁调用?

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:module_entry_entry.cj和ability_mainability_entry.cj什么时候调用?被谁调用?

在helloCanjie例程中

module_entry_entry.cj代码:

package ohos_app_cangjie_entry

import ohos.ability.AbilityStage

let ENTRY_STAGE_REGISTER_RESULT = AbilityStage.registerCreator(“entry”, {=> MyAbilityStage()})

==========================================================================

ability_mainability_entry.cj代码:

package ohos_app_cangjie_entry

import ohos.ability.Ability

let ENTRYABILITY_REGISTER_RESULT = Ability.registerCreator(“EntryAbility”, {=> MainAbility()})

这两个文件,什么时候被调用?被哪个文件或代码调用?

从module.json5中:

{

  “module”: {

    “name”: “entry”,

    “type”: “entry”,

    “description”: “$string:module_desc”,

    “mainElement”: “EntryAbility”,

    “deviceTypes”: [

      “phone”

    ],

    “deliveryWithInstall”: true,

    “installationFree”: false,

    “srcEntry”: “ohos_app_cangjie_entry.MyAbilityStage”,

    “abilities”: [

      {

        “name”: “EntryAbility”,

        “srcEntry”: “ohos_app_cangjie_entry.MainAbility”,

可以看到,在HAP加载后,要创建一个abilityStage,这里的abilityState名称应该是entry,代码是MyAbilityStage,而MyAbilityStage继承自AbilityState,从文件 ability_stage.cj可以看出:

class MyAbilityStage <: AbilityStage {

    public override func onCreate(): Unit {

        AppLog.info(“MyAbilityStage onCreated.”)

    }

}

但是怎么调用文件 module.entry.entry.cj的,不明白:

let ENTRY_STAGE_REGISTER_RESULT = AbilityStage.registerCreator(“entry”, {=> MyAbilityStage()})

这是在什么配置文件中配置好的吗?


更多关于HarmonyOS 鸿蒙Next:module_entry_entry.cj和ability_mainability_entry.cj什么时候调用?被谁调用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
这两个文件的调用和配置通常由HarmonyOS的运行时环境管理,开发者通常不需要直接干预这些过程

更多关于HarmonyOS 鸿蒙Next:module_entry_entry.cj和ability_mainability_entry.cj什么时候调用?被谁调用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,module_entry_entry.cjability_mainability_entry.cj的调用时机与调用者如下:

  1. module_entry_entry.cj

    • 调用时机:当应用首次启动,且系统需要加载应用的入口模块时。
    • 调用者:系统应用管理服务(如AppMgrService)或应用孵化器(如AppSpawn)。这些系统服务负责在应用启动时加载和初始化应用的各个模块。
  2. ability_mainability_entry.cj

    • 调用时机:当应用中的MainAbility(主能力)需要被启动或实例化时。
    • 调用者:AbilityLoader或AbilityManager。开发者开发的Ability需先通过AbilityLoader注册到框架中,当需要启动MainAbility时,AbilityManager会与AbilityLoader进行通信,实例化并启动MainAbility,此时会调用ability_mainability_entry.cj

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部