精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

OpenHarmony鴻蒙開發學習:【Ability的啟動模式】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-10 16:32 ? 次閱讀

Stage模型中,實現standard、singleton、specified多種模式場景。

本實例參考[開發指南][gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]。 本實例需要使用[aa工具] 查看應用Ability 模式信息

效果預覽

image.png

使用說明

搜狗高速瀏覽器截圖20240326151450.png

1、standard模式:

1)進入首頁,點擊番茄,會新建一個番茄的Ability,展示番茄的詳情;

2)在番茄的詳情界面,點擊黃瓜,會新建一個黃瓜的Ability,展示黃瓜的詳情;

3)使用aa工具查看Ability信息,此時存在以下Ability:1個番茄的Ability、1個黃瓜的Ability、1個首頁的Ability;

2、singleton模式:

1)進入首頁,點擊冰淇凌,會新建一個冰淇凌的Ability,展示冰淇凌的詳情;

2)在冰淇凌的詳情界面,點擊螃蟹,會復用冰淇凌的Ability,頁面數據會刷新并展示螃蟹的詳情;

3)使用aa工具查看Ability信息,此時存在以下Ability:1個冰淇凌的Ability、1個首頁Ability;

3、specified模式:

1)進入首頁,點擊核桃,會新建一個核桃的Ability,展示核桃的詳情;

2)在核桃的詳情界面,點擊藍莓,會新建一個藍莓的Ability,展示藍莓的詳情;

3)在藍莓的詳情界面,點擊核桃,會復用已存在的核桃的Ability,實現specified模式下的單實例特性,頁面數據會刷新并展示核桃的詳情;

4)使用aa工具查看Ability信息,此時存在以下Ability:1個核桃的Ability、1個藍莓的Ability、1個首頁Ability;

具體實現

  • 本示例啟動standard、singleton、specified三種模式的方法主要封裝在Util當中,源碼參考:[Util.ts]。
/*

 * Copyright (c) 2022 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import Logger from './Logger'



const TAG = '[Sample_StartMode]'

let contextCaller, want



interface EventHub {

  emit(event: string, ...args: Object[]): void

}



interface AbilityContext {

  eventHub: EventHub

}



export function getContextData(): any {

  Logger.info(TAG, 'UtilPage getContextData start')

  let context = getContext(this) as AbilityContext

  let data = {

    context: null,

    launchWant: null

  }

  context.eventHub.emit("getAbilityData", data)

  contextCaller = data.context // 拿到全局的context,即類似globalThis.mainAbilityContext

  want = data.launchWant

  Logger.info(TAG, 'UtilPage contextCaller ' + JSON.stringify(contextCaller))

  return { 'want': want }

}



export function startMode(wantParameters: any, abilityName: string) {

  Logger.info(TAG, `${abilityName} start`)

  getContextData()

  let want = {

    bundleName: 'ohos.samples.startmode',

    abilityName: abilityName,

    parameters: wantParameters

  }



  Logger.info(TAG, `${abilityName} contextCaller ${JSON.stringify(contextCaller)}`)

  contextCaller.startAbility(want).catch(err = > {

    Logger.info(TAG, 'err is' + JSON.stringify(err))

  })

  Logger.info(TAG, `${abilityName} end`)

}



export function totast() {

  AlertDialog.show(

    {

      message: $r('app.string.totast'),

      secondaryButton: {

        value: 'ok',

        action: () = > {

          Logger.info(TAG, 'Callback when the second button is clicked')

        }

      }

    }

  )

}
  • 新建Ability:創建三個代表standard、singleton、specified模式的Ability,如工程目錄中的SingletonAbility、SpecifiedAbility、StandardAbility,并在module.json文件中將launchType屬性修改為對應的啟動模式屬性。
  • 啟動指定Ability:通過Util中的startMode函數根據頁面所傳的abilityName,啟動對應的ability并進入詳情頁面。
  • specified多實例功能實現:specified模式則是根據MyAbilityStage中的onAcceptWant函數給用戶返回一個ability標識,如果之前啟動過標識的ability,不創建新的實例并拉回棧頂,否則創建新的實例并啟動。

審核編輯 黃宇

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

    關注

    57

    文章

    2320

    瀏覽量

    42748
  • OpenHarmony
    +關注

    關注

    25

    文章

    3663

    瀏覽量

    16159
收藏 人收藏

    評論

    相關推薦

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發板演示

    本文介紹開源鴻蒙OpenHarmony系統下,開啟/關閉SELinux權限的方法,觸覺智能Purple Pi OH鴻蒙開發板演示,已適配全新Open
    的頭像 發表于 11-18 19:03 ?199次閱讀
    如何在開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux<b class='flag-5'>模式</b>?RK3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>板演示

    鴻蒙OpenHarmony南向/北向快速開發教程-迅為RK3568開發

    4.1學習之旅了嗎?快來加入我們,一起探索鴻蒙4.1系統的無限魅力吧! 【北京迅為】OpenHarmony學習開發系列教程(第1期 北向基礎
    發表于 07-23 10:44

    鴻蒙開發啟動本地PageAbility

    PageAbility相關的能力通過featureAbility提供,啟動本地Ability通過featureAbility中的startAbility接口實現。
    的頭像 發表于 06-18 09:29 ?263次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:<b class='flag-5'>啟動</b>本地PageAbility

    鴻蒙開發:PageAbility的啟動模式

    啟動模式對應PageAbility被啟動時的行為,支持單實例模式、多實例模式兩種啟動
    的頭像 發表于 06-17 14:35 ?322次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:PageAbility的<b class='flag-5'>啟動</b><b class='flag-5'>模式</b>

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

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

    哪吒汽車APP啟動鴻蒙原生應用開發

    哪吒汽車正式簽約,啟動鴻蒙原生應用開發;在5月17日,在上海市經濟和信息化委員會指導的“千帆競發啟航 共筑鴻蒙生態——HDD上海站·鴻蒙原生
    的頭像 發表于 05-18 09:48 ?1145次閱讀

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

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

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

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

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

    particleAbility模塊提供了Service類型Ability的能力,包括啟動、停止指定的particleAbility,獲取dataAbilityHelper,連接、斷開當前Ability與指定ServiceAbil
    的頭像 發表于 05-09 10:21 ?691次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>接口<b class='flag-5'>Ability</b>框架:【@ohos.<b class='flag-5'>ability</b>.particleAbility (particleAbility模塊)】

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

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

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

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

    鴻蒙實戰項目開發:【短信服務】

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ? 最后呢,很多開發朋友不知道需要學習那些
    發表于 03-03 21:29

    鴻蒙不再兼容安卓,那么鴻蒙開發者是否會大增?

    鴻蒙技術,享受藍海紅利。 鴻蒙的技術技能體系是怎么的?其實鴻蒙的板塊內容也是居多的,可以用一張鴻蒙開發
    發表于 01-31 22:17

    鴻蒙開發OpenHarmony組件復用案例

    ) } }, item => item) } } } 本文主要是對鴻蒙開發基礎當中的OpenHarmony技術組件復用示例, 更多鴻蒙開發
    發表于 01-15 17:37

    鴻蒙Ability開發-Stage模型下Ability的創建和使用

    Ability開發技術的簡單運用,更多的鴻蒙開發技術可以前往我主頁查詢,下面分享鴻蒙開發4.0
    發表于 01-08 15:34