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

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

3天內(nèi)不再提示

鴻蒙Stage模型和FA模型區(qū)別

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-01-04 11:59 ? 次閱讀

筆者這兩個月一直在折騰分布式應(yīng)用,并且分別基于 API8 的 FA 模型以及 API9 的 Stage 模型進行了開發(fā),這兩天總算是基本開發(fā)完了,閑下來總結(jié)下這兩者的區(qū)別,順便跟大家嘮嘮開發(fā)時踩過的坑。

請求權(quán)限

Stage 模型中配置文件由 FA 模型的 config.json 改為 module.json5,同時一些字段名也發(fā)生了改變。

例如 reqPermissions 就改為 requestPermissions(好像這個區(qū)別并不是很起眼,但就是因為之前我有一個朋友在使用 Stage 模型開發(fā)時直接復制了 FA 模型的請求權(quán)限代碼,而我一開始也沒看出來哪里有問題,因為只差了幾個字母,后來我手敲代碼才找到了問題所在)。

FA:

"reqPermissions":[
{
"name":"ohos.permission.DISTRIBUTED_DATASYNC"
}
]
Stage:
"requestPermissions":[
{
"name":"ohos.permission.DISTRIBUTED_DATASYNC"
}
]

獲取 Context

FA:

letcontext=featureAbility.getContext();
Stage Stage 模型中包含多種 Context,比較常用的有 AbilityContext 和在 eTS 頁面中訪問 Context。 AbilityContext Stage 模型下,每個 Ability 中都包含了一個 Context 屬性:

aebc85c4-8be3-11ed-bfe3-dac502259ad0.png

在繼承 Ability 的類中通過 this.context 就可以獲取 AbilityContext,從而操作 Ability 的方法(如 startAbility、connectAbility 等)

importAbilityfrom'@ohos.application.Ability'

exportdefaultclassMainAbilityextendsAbility{
onCreate(want,launchParam){
this.context.requestPermissionsFromUser(PERMISSIONS)
}
onWindowStageCreate(windowStage){
letcontext=this.context;
}
...
};
在 eTS 頁面中訪問 Context: aec97d92-8be3-11ed-bfe3-dac502259ad0.png
//獲取當前component關(guān)聯(lián)的Context
letcontext=getContext(this)asany

啟動 Ability

FA:

featureAbility.startAbility({
want:{
bundleName:'com.haoc.distributevideoplayer',
abilityName:'com.haoc.distributevideoplayer.MainAbility',
deviceId:deviceId,
parameters:{
isFA:'FA'
}
}
})

Stage:

context.startAbility({
bundleName:'com.haoc.distributevideoplayer',
abilityName:'EntryAbility',
deviceId:deviceId,
parameters:{
isFA:'FA'
}
})
①Stage 模型不再使用 featureAbility 接口,而需要先獲取當前 Ability 的上下文,再由 AbilityContext 調(diào)用 startAbility 方法。 ②相比 FA 模型少了一對{}括號。 ③MainAbility 改名為 EntryAbility,且 abilityName 不再是由 package + Ability name 組成。

結(jié)語

由于開發(fā)時部分接口在 API9 以上才提供,所以需要將應(yīng)用 API 升級到 9。 但其實 API9 也提供了 FA 模型,只需要在 API8 的基礎(chǔ)上進行小部分修改即可,那筆者為何還花費大量精力去折騰 Stage 模型呢? 一個是想體驗一下這兩者在開發(fā)上的差別,另一個是未來將不再主推 FA 模型,現(xiàn)在學習的成本沒有以后的成本高。 筆者在開發(fā)時還發(fā)現(xiàn)許多接口將被廢棄,例如 Ability,將會用 UIAbility 代替,不過接口基本上不會有很大改變,都是改個名字、加個參數(shù)之類。 關(guān)于兩種模型還有什么差別歡迎大家留言討論,文章有錯誤之處也歡迎指出。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3112

    瀏覽量

    48658
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2302

    瀏覽量

    42689

原文標題:鴻蒙Stage模型和FA模型區(qū)別

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    鴻蒙Stage模型--概述

    Stage模型:HarmonyOS 3.1 Develper Preview版本開始新增的模型,是目前主推且會長期演進的模型。在該模型中,由
    的頭像 發(fā)表于 01-29 13:59 ?1194次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Stage</b><b class='flag-5'>模型</b>--概述

    Stage 模型深入解讀

    HarmonyOS 3.1 版本(API 9)推出了全新應(yīng)用開發(fā)模型 - Stage 模型,該模型重新定義了應(yīng)用開發(fā)的能力邊界,從應(yīng)用開發(fā)模型
    的頭像 發(fā)表于 02-18 09:28 ?1057次閱讀
    <b class='flag-5'>Stage</b> <b class='flag-5'>模型</b>深入解讀

    鴻蒙OS開發(fā)案例:【Stage模型卡片】

    本示例展示了Stage模型卡片提供方的創(chuàng)建與使用。
    的頭像 發(fā)表于 04-09 17:13 ?929次閱讀
    <b class='flag-5'>鴻蒙</b>OS開發(fā)案例:【<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>卡片】

    Stage模型深入解讀

    。 相比于FA模型,Stage模型提供了更靈活的開發(fā)方式,更低的內(nèi)存占用和更規(guī)范化的系統(tǒng)管理機制。 未來HarmonyOS將在兼容FA
    發(fā)表于 03-15 10:32

    鴻蒙元服務(wù)萬能卡片開發(fā)-stage模型fa模型的卡片區(qū)別

    一、項目類型 Application: 應(yīng)用開發(fā) Atomic Service:原子化服務(wù)開發(fā) 這里選擇Empty Ability模板創(chuàng)建項目。 二、Stage模型卡片開發(fā) Api:9
    發(fā)表于 05-22 14:20

    OpenHarmony應(yīng)用模型的構(gòu)成要素與Stage優(yōu)勢

    應(yīng)用開發(fā)更簡單、高效。 二、Stage主推模型優(yōu)勢 Stage模型之所以成為主推模型,源于其設(shè)計思想。S
    發(fā)表于 09-26 16:48

    Stage模型深入解讀

    作者:sunbingxin 應(yīng)用框架架構(gòu)師 HarmonyOS 3.1版本(API 9)推出了全新應(yīng)用開發(fā)模型-Stage模型,該模型重新定義了應(yīng)用開發(fā)的能力邊界,從應(yīng)用開發(fā)
    的頭像 發(fā)表于 03-16 13:35 ?856次閱讀

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型Stage模型應(yīng)用組件互通綜述

    FA模型Stage模型是兩套不同的應(yīng)用模型,他們擁有各自的組件。FA
    的頭像 發(fā)表于 06-24 16:43 ?445次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>與<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>應(yīng)用組件互通綜述

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型啟動Stage模型UIAbility

    本文介紹FA模型的三種應(yīng)用組件如何啟動Stage模型的UIAbility組件。
    的頭像 發(fā)表于 06-25 16:00 ?314次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>啟動<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>UIAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型綁定Stage模型ServiceExtensionAbility

    本文介紹FA模型的三種應(yīng)用組件如何綁定Stage模型的ServiceExtensionAbility組件。
    的頭像 發(fā)表于 06-25 10:43 ?244次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>綁定<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>ServiceExtensionAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型訪問Stage模型DataShareExtensionAbility

    無論FA模型還是Stage模型,數(shù)據(jù)讀寫功能都包含客戶端和服務(wù)端兩部分。
    的頭像 發(fā)表于 06-25 14:30 ?355次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>訪問<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>DataShareExtensionAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型啟動FA模型PageAbility

    本小節(jié)介紹Stage模型的兩種應(yīng)用組件如何啟動FA模型的PageAbility組件。
    的頭像 發(fā)表于 06-26 09:50 ?320次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>啟動<b class='flag-5'>FA</b><b class='flag-5'>模型</b>PageAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型綁定FA模型ServiceAbility

    本小節(jié)介紹Stage模型的兩種應(yīng)用組件如何綁定FA模型ServiceAbility組件。
    的頭像 發(fā)表于 06-25 21:47 ?250次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>綁定<b class='flag-5'>FA</b><b class='flag-5'>模型</b>ServiceAbility

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型概述

    本文介紹如何將一個FA模型開發(fā)的聲明式范式應(yīng)用切換到Stage模型
    的頭像 發(fā)表于 06-26 14:40 ?310次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切換<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>概述

    鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型切換Stage模型指導 module的切換

    FA模型切換到Stage模型時,開發(fā)者需要將config.json文件module標簽下的配置遷移到module.json5配置文件module標簽下,具體差異見下列表格。
    的頭像 發(fā)表于 06-27 14:16 ?381次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)Ability Kit程序框架服務(wù):<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切換<b class='flag-5'>Stage</b><b class='flag-5'>模型</b>指導 module的切換