成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenHarmony使用Stage模型和FA模型開發分布式應用時的差別

系統 OpenHarmony
Stage模型中配置文件由FA模型的config.json改為module.json5,同時一些字段名也發生了改變,例如reqPermissions就改為requestPermissions(好像這個區別并不是很起眼,但就是因為之前我有一個朋友在使用Stage模型開發時直接復制了FA模型的請求權限代碼。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

前言

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

請求權限

Stage模型中配置文件由FA模型的config.json改為module.json5,同時一些字段名也發生了改變,例如reqPermissions就改為requestPermissions(好像這個區別并不是很起眼,但就是因為之前我有一個朋友在使用Stage模型開發時直接復制了FA模型的請求權限代碼,而我一開始也沒看出來哪里有問題,因為只差了幾個字母,后來我手敲代碼才找到了問題所在??)。

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模型下,每個Ability中都包含了一個Context屬性。

OpenHarmony使用Stage模型和FA模型開發分布式應用時的差別-開源基礎軟件社區

在繼承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所關聯的Context對象。

// 獲取當前component關聯的Context
let context = getContext(this) as any

啟動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接口,而需要先獲取當前Ability的上下文,再由AbilityContext調用startAbility方法。

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

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

結語

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

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

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

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2022-04-24 16:00:03

Ability鴻蒙

2022-10-27 16:01:41

AbilityStage模型FA模型

2023-10-26 18:10:43

分布式并行技術系統

2022-11-08 15:48:35

應用開發音樂播放器

2021-02-01 09:35:53

關系型數據庫模型

2022-02-17 18:08:04

OpenHarmon應用開發鴻蒙

2014-06-30 14:20:05

NoSQL數據庫

2023-02-20 15:38:38

2023-02-21 16:41:41

分布式相機鴻蒙

2023-02-20 15:29:14

分布式相機鴻蒙

2023-11-02 09:33:31

Go語言Raft算法

2020-09-23 22:36:27

分布式架構系統

2023-11-01 20:10:53

分布式并行技術

2022-08-29 08:40:00

數據模型

2021-07-28 08:39:25

分布式架構系統

2017-06-29 13:29:34

大數據PAI機器學習

2010-08-12 17:56:58

ibmdwRational

2018-12-14 10:06:22

緩存分布式系統

2017-03-02 13:19:43

dubbo分布式框架

2019-06-19 15:40:06

分布式鎖RedisJava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线一区二区三区 | 蜜桃视频一区二区三区 | 天天干天天干 | 欧美一区二区三区日韩 | 欧美一区二区免费 | 91福利网址| 国产精品无码久久久久 | 成人av网站在线观看 | 精品国产91乱码一区二区三区 | 欧美日韩亚洲一区 | 欧美日韩精品中文字幕 | 国产一区免费 | 五月婷婷在线视频 | 激情a | 99亚洲国产精品 | 精品国产1区2区3区 一区二区手机在线 | 久久国产婷婷国产香蕉 | 亚洲成人激情在线观看 | 亚洲国产精品va在线看黑人 | 午夜精品一区二区三区在线视频 | 黄色三级在线播放 | 欧美日韩国产精品一区 | 日韩一| 欧美另类视频在线 | 日韩在线不卡 | 日韩三级一区 | 成人深夜小视频 | 精品久久一区 | 欧美一级片 | 亚洲日本中文字幕在线 | 动漫www.被爆羞羞av44 | 干干干操操操 | 国产一级电影在线观看 | 欧美一二三区 | 欧美精品中文字幕久久二区 | 久久99精品久久久 | 国产高清精品一区二区三区 | 久久一区二区三区四区 | 国产精品久久久久aaaa九色 | 精品美女 | 日本成人福利视频 |