HarmonyOS鸿蒙Next中多个Ability优先启动哪个

HarmonyOS鸿蒙Next中多个Ability优先启动哪个 如何设置那个ability为启动app时的默认页面
2.多个ability同时设置为默认页面,优先启动哪一个

{
  "module": {
    "name": "bbt_app_entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet",
      "2in1"
    ],
    "metadata": [
      {
        "name": "ArkTSPartialUpdate",
        "value": "true"
      }
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "DeepLinkAbility",
        "srcEntry": "./ets/entryability/DeepLinkAbility.ets",
        "icon": "$media:startIcon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:app_color_705dd5",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.browsable",
              "entity.system.home"
            ],
            "actions": [
              "ohos.want.action.viewData",
              "action.system.home"
            ],
            "uris": [
              {
                "scheme": "https",
                "host": "popen.babytree.com",
                "port": "443",
                "path": "path1"
              }
            ],
            "domainVerify": true
          }
        ]
      },
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:startIcon",
        "label": "$string:app_name",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.GET_NETWORK_INFO",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.READ_MEDIA",
        "reason": "$string:permission_reason_read_media",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.WRITE_MEDIA",
        "reason": "$string:permission_reason_write_media",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.VIBRATE",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.PRIVACY_WINDOW",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.ACCELEROMETER",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ]
  }
}

更多关于HarmonyOS鸿蒙Next中多个Ability优先启动哪个的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

具体参考如下链接
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-component-configuration-stage-V5

killAllProcesses()杀死应用所在的进程,一个应用可以包含多个Ability,默认所有的Ability都运行在一个进程中,但也可以配置运行在不同的进程中。那么,UIAbilityContext下的terminateSelf是走UIAbility的正常生命周期,正常销毁。而ApplicationContext下的killAllProcesses是找出应用下面所有的进程,逐个kill掉,属于强杀。

参考文档:ApplicationContext 应用接口依赖的元素及定义 ArkTS API Ability Kit(程序框架服务) 应用框架 - 华为HarmonyOS开发者

更多关于HarmonyOS鸿蒙Next中多个Ability优先启动哪个的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)Next中,多个Ability的启动优先级由系统根据Ability的类型和配置决定。默认情况下,系统会优先启动MainAbility,因为它是应用的入口Ability,通常在应用的config.json文件中被配置为launchTypestandard。如果应用中有多个Ability,且没有显式指定启动顺序,系统会按照Ability的声明顺序进行启动。如果开发者希望指定某个Ability优先启动,可以在config.json中通过设置launchTypestandardsingleton来调整启动顺序。singleton类型的Ability在系统中只会存在一个实例,且会被优先启动。

在HarmonyOS鸿蒙Next中,多个Ability的启动优先级取决于开发者配置的意图(Intent)和启动模式。具体规则如下:

  1. 默认启动:若未指定具体的Ability,系统会根据Intent中的action、category等匹配最适合的Ability启动。
  2. 显式启动:通过明确指定Ability名称(如ohos.aafwk.ability.Ability)启动特定Ability。
  3. 任务栈规则:若目标Ability已在任务栈中,系统会根据启动模式(如standardsingleTop等)决定是否重新创建实例。

优先级由开发者在配置文件中定义,系统按规则执行。

回到顶部