色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙Ability Kit(程序框架服務)【應用啟動框架AppStartup】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-10 18:38 ? 次閱讀

應用啟動框架AppStartup

概述

AppStartup提供了一種更加簡單高效的初始化組件的方式,支持異步初始化組件加速應用的啟動時間。使用啟動框架應用開發者只需要分別為待初始化的組件實現AppStartup提供的[StartupTask]接口,并在[startup_config]中配置AppStartup之間的依賴關系,啟動框架將使用拓撲排序保證各個待初始化組件的初始化順序。啟動框架只支持在entry中使用。

添加配置

應用需要在[module.json5配置文件]中配置appStartup標簽, 并指定啟動框架的配置文件路徑。

{
  "module": {
    "name": "entry",
    "type": "entry",
    ...
    "appStartup": "$profile:startup_config",
    ...
  }
}

添加啟動框架配置文件

應用需要在工程的resource目錄下添加啟動框架的配置文件,配置文件路徑需要與[module.json5配置文件]中appStartup標簽指定的路徑一致。

示例代碼如下所示。

{
  "startupTasks": [
    {
      "name": "StartupTask_001",
      "srcEntry": "./ets/startup/StartupTask_001.ets",
      "dependencies": [
        "StartupTask_002",
        "StartupTask_003"
      ],
      "runOnThread": "taskPool",
      "waitOnMainThread": false
    },
    {
      "name": "StartupTask_002",
      "srcEntry": "./ets/startup/StartupTask_002.ets",
      "dependencies": [
        "StartupTask_004"
      ],
      "runOnThread": "taskPool",
      "waitOnMainThread": false
    },
    {
      "name": "StartupTask_003",
      "srcEntry": "./ets/startup/StartupTask_003.ets",
      "runOnThread": "taskPool",
      "waitOnMainThread": false
    },
    {
      "name": "StartupTask_004",
      "srcEntry": "./ets/startup/StartupTask_004.ets",
      "runOnThread": "taskPool",
      "waitOnMainThread": false
    },
    {
      "name": "StartupTask_005",
      "srcEntry": "./ets/startup/StartupTask_005.ets",
      "runOnThread": "mainThread",
      "waitOnMainThread": true
    },
    {
      "name": "StartupTask_006",
      "srcEntry": "./ets/startup/StartupTask_006.ets",
      "runOnThread": "mainThread",
      "waitOnMainThread": false,
      "excludeFromAutoStart": true
    }
  ],
  "configEntry": "./ets/startup/StartupConfig.ets"
}

startup_config配置文件標簽說明

屬性名稱含義數據類型是否可缺省
startupTasks待初始化組件配置信息對象數組該標簽不可缺省。
configEntry[StartupConfig]文件路徑。字符串該標簽不可缺省。

startupTasks標簽說明

屬性名稱含義數據類型是否可缺省
name待初始化組件實現[StartupTask]接口的類名稱。對象數組該標簽不可缺省。
srcEntry需要加載的組件實現[StartupTask]接口的文件路徑。字符串該標簽不可缺省。
dependencies當前組件所依賴組件實現[StartupTask]接口的類名稱數組。對象數組該標簽可缺省,缺省值為空。
excludeFromAutoStart是否排除自動模式。 - true:手動模式。 - false:自動模式。布爾值該標簽可缺省,缺省值為false。
waitOnMainThread是否在主線程等待。 - true:主線程等待組件初始化。 - false:主線程不等待組件初始化。布爾值該標簽可缺省,缺省值為true。
runOnThread執行初始化所在的線程。 -mainThread:在主線程中執行。 -taskPool:在異步線程中執行。字符串該標簽可缺省,缺省值為mainThread

添加啟動框架組件

所有待加載組件均要實現[StartupTask]接口,文件放置在工程的ets目錄下的startup文件夾下,StartupTask必須添加[Sendable]注解。

import StartupTask from '@ohos.app.appstartup.StartupTask';
import common from '@ohos.app.ability.common';
import hilog from '@ohos.hilog';

@Sendable
export default class StartupTask_001 extends StartupTask {
  constructor() {
    super();
  }
  async init(context: common.AbilityStageContext) {
    hilog.info(0x0000, 'testTag', 'StartupTask_001 init.');
    return 'StartupTask_001';
  }

  onDependencyCompleted(dependence: string, result: Object): void {
    hilog.info(0x0000, 'testTag', 'StartupTask_001 onDependencyCompleted, dependence: %{public}s, result: %{public}s',
      dependence, JSON.stringify(result));
  }
}

添加啟動框架配置

應用需要在工程的ets目錄下的startup文件夾下添加啟動框架配置,開發者可以在該文件中配置超時時間以及組件初始化的監聽器,啟動框架配置需要在[StartupConfigEntry]中設置[StartupConfig]與[StartupListener]。

import StartupConfig from '@ohos.app.appstartup.StartupConfig';
import StartupConfigEntry from '@ohos.app.appstartup.StartupConfigEntry';
import StartupListener from '@ohos.app.appstartup.StartupListener';
import hilog from '@ohos.hilog';
import { BusinessError } from '@ohos.base';

export default class MyStartupConfigEntry extends StartupConfigEntry {
  onConfig() {
    hilog.info(0x0000, 'testTag', `onConfig`);
    let onCompletedCallback = (error: BusinessError< void >) = > {
      hilog.info(0x0000, 'testTag', `onCompletedCallback`);
      if (error) {
        hilog.info(0x0000, 'testTag', 'onCompletedCallback: %{public}d, message: %{public}s', error.code, error.message);
      } else {
        hilog.info(0x0000, 'testTag', `onCompletedCallback: success.`);
      }
    }
    let startupListener: StartupListener = {
      'onCompleted': onCompletedCallback
    }
    let config: StartupConfig = {
      'timeoutMs': 10000,
      'startupListener': startupListener
    }
    return config;
  }
}

啟動組件

AppStartup分別提供了自動和手動兩種方式來初始化組件,應用開發者可以根據自己的需求選擇合適的初始化方式。

手動模式

手動模式需要應用開發者手動調用[StartupManager]中的[run]方法來手動啟動組件的初始化。

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@ohos.base';
import startupManager from '@ohos.app.appstartup.startupManager';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
    let startParams = ['StartupTask_006'];
    try {
      startupManager.run(startParams).then(() = > {
        console.log('StartupTest startupManager run then, startParams = ');
      }).catch((error: BusinessError) = > {
        console.info("StartupTest promise catch error, error = " + JSON.stringify(error));
        console.info("StartupTest promise catch error, startParams = "
          + JSON.stringify(startParams));
      })
    } catch (error) {
      let errMsg = JSON.stringify(error);
      let errCode: number = error.code;
      console.log('Startup catch error , errCode= ' + errCode);
      console.log('Startup catch error ,error= ' + errMsg);
    }
  }
  ...
}

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

自動模式

自動模式應用開發者需要將[startup_config]中的excludeFromAutoStart標簽設置為false,當應用啟動時啟動框架會在abilityStage的onCreate前執行組件初始化。

{
  "startupTasks": [
    {
      "name": "StartupTask_001",
      ...
      "excludeFromAutoStart": false
    },
    ...
  ],
  ...
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 框架
    +關注

    關注

    0

    文章

    403

    瀏覽量

    17475
  • 鴻蒙
    +關注

    關注

    57

    文章

    2339

    瀏覽量

    42805
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發接口Ability框架:【@ohos.application.Ability (Ability)】

    Ability模塊提供對Ability生命周期、上下文環境等調用管理的能力,包括Ability創建、銷毀、轉儲客戶端信息等。
    的頭像 發表于 04-30 17:42 ?2254次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.<b class='flag-5'>Ability</b> (<b class='flag-5'>Ability</b>)】

    鴻蒙開發接口Ability框架:【@ohos.ability.featureAbility (FeatureAbility模塊)】

    FeatureAbility模塊提供帶有UI設計與用戶交互的能力,包括啟動新的ability、獲取dataAbilityHelper、設置此Page Ability、獲取當前Ability
    的頭像 發表于 05-06 16:31 ?999次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.<b class='flag-5'>ability</b>.featureAbility (FeatureAbility模塊)】

    鴻蒙開發接口Ability框架:【(AbilityDelegator)】

    OnCreate生命周期、設置等待時間等、獲取指定ability的生命周期狀態、獲取當前應用頂部ability啟動指定ability等。
    的頭像 發表于 05-13 17:58 ?953次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【(AbilityDelegator)】

    鴻蒙開發接口Ability框架:【AbilityDelegator】

    OnCreate生命周期、設置等待時間等、獲取指定ability的生命周期狀態、獲取當前應用頂部ability啟動指定ability等。
    的頭像 發表于 05-16 16:48 ?930次閱讀
    <b class='flag-5'>鴻蒙</b>開發接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityDelegator】

    鴻蒙Ability Kit程序框架服務)【ServiceExtensionAbility】

    [ServiceExtensionAbility]是SERVICE類型的ExtensionAbility組件,提供后臺服務能力,其內部持有了一個[ServiceExtensionContext],通過[ServiceExtensionContext]提供了豐富的接口供外部使用。
    的頭像 發表于 06-04 14:50 ?1198次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【ServiceExtensionAbility】

    鴻蒙Ability Kit程序框架服務)【UIExtensionAbility】

    [UIExtensionAbility]是UI類型的ExtensionAbility組件,需要與[UIExtensionComponent]一起配合使用,開發者可以在UIAbility的頁面中通過UIExtensionComponent嵌入提供方應用的UIExtensionAbility提供的UI。UIExtensionAbility會在獨立于UIAbility的進程中運行,完成其頁面的布局和渲染。常用于有進程隔離訴求的系統彈窗、狀態欄、膠囊等模塊化開發的場景。
    的頭像 發表于 06-05 09:19 ?1368次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【UIExtensionAbility】

    HarmonyOS NEXT應用元服務開發Intents Kit(意圖框架服務)綜述

    一、綜述 Intents Kit(意圖框架服務)是HarmonyOS級的意圖標準體系 ,意圖連接了應用/元服務內的業務功能。 意圖框架能幫開
    發表于 11-28 10:43

    鴻蒙應用開發的JS UI框架如何實現高德地圖的訪問?

    鴻蒙應用,現在分為Java UI框架和Ark UI框架,其中JS UI開發者框架Ark UI框架,現在高德地圖為
    發表于 04-28 11:44

    鴻蒙應用模型:【Ability Kit】簡介

    Ability Kit程序框架服務)提供了應用程序開發和運行的應用模型,是系統為開發者提供的應
    的頭像 發表于 05-29 14:41 ?635次閱讀
    <b class='flag-5'>鴻蒙</b>應用模型:【<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>】簡介

    鴻蒙Ability Kit程序框架服務)【UIAbility組件啟動模式】

    UIAbility的啟動模式是指UIAbility實例在啟動時的不同呈現狀態。針對不同的業務場景,系統提供了三種啟動模式:
    的頭像 發表于 06-06 11:05 ?820次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【UIAbility組件<b class='flag-5'>啟動</b>模式】

    鴻蒙Ability Kit程序框架服務)【UIAbility組件基本用法】

    UIAbility組件的基本用法包括:指定UIAbility的啟動頁面以及獲取UIAbility的上下文[UIAbilityContext]。
    的頭像 發表于 06-06 11:02 ?468次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【UIAbility組件基本用法】

    鴻蒙Ability Kit程序框架服務)【Ability內頁面間的跳轉】

    基于Stage模型下的Ability開發,實現Ability內頁面間的跳轉和數據傳遞。
    的頭像 發表于 06-03 20:43 ?296次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>Ability</b>內頁面間的跳轉】

    鴻蒙Ability Kit程序框架服務)【ExtensionAbility組件】

    ExtensionAbility組件是基于特定場景(例如服務卡片、輸入法等)提供的應用組件,以便滿足更多的使用場景。
    的頭像 發表于 06-04 15:54 ?576次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【ExtensionAbility組件】

    鴻蒙Ability Kit程序框架服務)【Ability與ServiceExtensionAbility通信】

    本示例展示通過[IDL的方式]和?[@ohos.rpc]?等接口實現了Ability與ServiceExtensionAbility之間的通信。
    的頭像 發表于 06-05 09:28 ?480次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>Ability</b>與ServiceExtensionAbility通信】

    鴻蒙開發Ability Kit程序框架服務:任務管理

    AbilityRecord:系統服務側管理一個UIAbility實例的最小單元,對應一個應用側的UIAbility組件實例。系統服務側管理UIAbility實例數量上限為512個。
    的頭像 發表于 06-24 14:46 ?442次閱讀
    <b class='flag-5'>鴻蒙</b>開發<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>:任務管理
    主站蜘蛛池模板: 色综合久久久久久| 4hu四虎免费影院www| YELLOW免费观看完整视频| 娇小亚裔被两个黑人| 色www永久免费| 91麻豆久久| 九九热在线视频| 午夜家庭影院| WWW国产精品人妻一二三区| 久久99热狠狠色AV蜜臀| 午夜福利92看看电影80| 北条麻妃快播| 免费看欧美xxx片| 一一本之道高清手机在线观看| 国产97视频在线观看| 免费高清在线影片一区| 99久久国产综合精品国| 久久99AV无色码人妻蜜柚| 我与旗袍老师疯狂床震| 芭乐视频网页版在线观看| 秘密教学26我们在做一次吧免费 | 理论937| 亚洲精品无码成人AAA片 | 果冻传媒2021一二三区| 色99蜜臀AV无码| 擦擦擦在线视频观看| 蜜芽丅v新网站在线观看| 一亲二脱三插| 精品久久免费观看| 亚洲spank男男实践网站| 国产精品九九久久精品视| 日日摸夜夜嗷嗷叫日日拍| 陈红下面又紧又小好爽| 热久久伊大人香蕉网老师| bbw videos 欧美老妇| 嫩草成人影院| 97视频免费观看2区| 麻豆成人久久精品二区三区网站 | 国产午夜福利100集发布| 无码成人AAAAA毛片含羞草| 国产超碰精久久久久久无码AV|