自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony使用Stage模型和FA模型開發(fā)分布式應(yīng)用時(shí)的差別

系統(tǒng) OpenHarmony
Stage模型中配置文件由FA模型的config.json改為module.json5,同時(shí)一些字段名也發(fā)生了改變,例如reqPermissions就改為requestPermissions(好像這個(gè)區(qū)別并不是很起眼,但就是因?yàn)橹拔矣幸粋€(gè)朋友在使用Stage模型開發(fā)時(shí)直接復(fù)制了FA模型的請求權(quán)限代碼。

??想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

前言

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

請求權(quán)限

Stage模型中配置文件由FA模型的config.json改為module.json5,同時(shí)一些字段名也發(fā)生了改變,例如reqPermissions就改為requestPermissions(好像這個(gè)區(qū)別并不是很起眼,但就是因?yàn)橹拔矣幸粋€(gè)朋友在使用Stage模型開發(fā)時(shí)直接復(fù)制了FA模型的請求權(quán)限代碼,而我一開始也沒看出來哪里有問題,因?yàn)橹徊盍藥讉€(gè)字母,后來我手敲代碼才找到了問題所在??)。

FA

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

Stage

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

獲取Context

FA

let context = featureAbility.getContext();

Stage

Stage模型中包含多種Context,比較常用的有AbilityContext和在eTS頁面中訪問Context,更多詳見參考資料[1]。

  • AbilityContext

Stage模型下,每個(gè)Ability中都包含了一個(gè)Context屬性。

OpenHarmony使用Stage模型和FA模型開發(fā)分布式應(yīng)用時(shí)的差別-開源基礎(chǔ)軟件社區(qū)

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

import Ability from '@ohos.application.Ability'

export default class MainAbility extends Ability {
onCreate(want, launchParam) {
this.context.requestPermissionsFromUser(PERMISSIONS)
}
onWindowStageCreate(windowStage) {
let context = this.context;
}
...
};
  • 在eTS頁面中訪問Context。

接口名

描述

getContext(component: Object): Object

獲取頁面中component所關(guān)聯(lián)的Context對象。

// 獲取當(dāng)前component關(guān)聯(lián)的Context
let context = getContext(this) as any

啟動(dòng)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'
}
})

1.Stage模型不再使用featureAbility接口,而需要先獲取當(dāng)前Ability的上下文,再由AbilityContext調(diào)用startAbility方法。

2.相比FA模型少了一對{}括號。

3.MainAbility改名為EntryAbility,且abilityName不再是由package + Ability name組成。

結(jié)語

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

??想了解更多關(guān)于開源的內(nèi)容,請?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-04-24 16:00:03

Ability鴻蒙

2023-10-26 18:10:43

分布式并行技術(shù)系統(tǒng)

2022-10-27 16:01:41

AbilityStage模型FA模型

2022-11-08 15:48:35

應(yīng)用開發(fā)音樂播放器

2021-02-01 09:35:53

關(guān)系型數(shù)據(jù)庫模型

2022-02-17 18:08:04

OpenHarmon應(yīng)用開發(fā)鴻蒙

2014-06-30 14:20:05

NoSQL數(shù)據(jù)庫

2023-02-20 15:38:38

2023-02-21 16:41:41

分布式相機(jī)鴻蒙

2023-02-20 15:29:14

分布式相機(jī)鴻蒙

2023-11-02 09:33:31

Go語言Raft算法

2020-09-23 22:36:27

分布式架構(gòu)系統(tǒng)

2023-11-01 20:10:53

分布式并行技術(shù)

2022-08-29 08:40:00

數(shù)據(jù)模型

2021-07-28 08:39:25

分布式架構(gòu)系統(tǒng)

2017-06-29 13:29:34

大數(shù)據(jù)PAI機(jī)器學(xué)習(xí)

2010-08-12 17:56:58

ibmdwRational

2017-03-02 13:19:43

dubbo分布式框架

2018-12-14 10:06:22

緩存分布式系統(tǒng)

2023-02-13 00:20:08

分布式系統(tǒng)安全
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號