本文是對分布式任務調(diào)度的一個技術(shù)教程,以一個簡單的案例來講解。
正文部分分為兩個部分:
第一部分是對分布式任務調(diào)度的簡單概述
第二部分是分布式任務調(diào)度的一個簡單案例(跨設備 FA 的拉起)
分布式任務調(diào)度的簡單概述
Ability 可以分為 FA(Feature Ability)和 PA(Particle Ability)兩種類型。
①FA 支持 Page Ability
Page 模板:FA 唯一支持的模板,用于提供與用戶交互的能力。一個 Page 實例可以包含一組相關(guān)頁面,每個頁面用一個 AbilitySlice 實例表示。
②PA 支持 Service Ability 和 Data Ability
Service 模板:用于提供后臺運行任務的能力。Data 模板:用于對外部提供統(tǒng)一的數(shù)據(jù)訪問抽象。

根據(jù) Ability 模板及意圖的不同,分布式任務調(diào)度向開發(fā)者提供以下六種能力:
啟動遠程 FA
啟動遠程 PA
關(guān)閉遠程 PA
連接遠程 PA
斷開連接遠程 PA
FA 跨設備遷移
“跨設備FA的拉起”的教程
①創(chuàng)建項目
DevEco Studio 下載安裝成功后,打開 DevEco Studio,點擊左上角的 File,點擊 New,再選擇 New Project。
選擇 Empty Ability(Java),然后點擊 Next,給項目命名 distribute_FA,選擇設備類型 Phone,最后點擊 Finish。
②申請權(quán)限
在 entry>src>main>config.json 文件中最下方"launchType": "standard"后面的中括號后且在上方的"module"的花括號內(nèi)添加以下代碼添加所需要的分布式權(quán)限:
"reqPermissions":[ { "name":"ohos.permission.DISTRIBUTED_DATASYNC" }, { "name":"ohos.permission.GET_DISTRIBUTED_DEVICE_INFO" } ]
第一個權(quán)限是允許不同設備間的數(shù)據(jù)交換(敏感權(quán)限)。第二個權(quán)限是允許獲取分布式組網(wǎng)內(nèi)的設備列表和設備信息(非敏感權(quán)限)。應用在使用對應服務的能力或數(shù)據(jù)時,需要申請對應權(quán)限。
已在 config.json 文件中聲明的非敏感權(quán)限,會在應用安裝時自動授予,該類權(quán)限的授權(quán)方式為系統(tǒng)授權(quán)(system_grant)。
敏感權(quán)限需要應用動態(tài)申請,通過運行時發(fā)送彈窗的方式請求用戶授權(quán),該類權(quán)限的授權(quán)方式為用戶授權(quán)(user_grant)。
在 entry>src>main>Java>MainAbility 文件里添加敏感權(quán)限(非敏感權(quán)限在該文件里可加可不加),在 onStart 函數(shù)里添加以下代碼:
requestPermissionsFromUser(newString[]{"ohos.permission.DISTRIBUTED_DATASYNC"},0);
如果添加的權(quán)限比較多可以像這樣新建一個字符串數(shù)組,后面的 0 是請求碼(requestCode),是用來標識請求的來源(這個值任自己設定)。
③界面布局
在 entry>src>main>resources>base>layout>ability_main.xml 文件里添加一個按鈕組件,加入唯一標識符 id 并配置好其他相應的屬性,代碼如下:
為了方便+好看,我把上方文本組件的 id 跟 text 改了一下:
ohos:id="$+id:text" ohos:text="分布式任務調(diào)度"
④設置點擊事件
在 entry>src>main>Java>slice>MainAbilitySlice 文件里的 onStart 下方定義一個函數(shù)來設置按鈕的點擊事件:
獲取分布式組網(wǎng)內(nèi)的設備列表和設備信息(其中 FLAG_GET_ONLINE_DEVICE 是獲取在線設備,可以根據(jù)需要選擇離線 OFFLINE 或者全部設備 ALL)。
get(0) 是指列表 devicelist 第一個元素。
operation 是用來封裝與 intent 相關(guān)的參數(shù)和操作,這里涉及的是 AbilityName、BundleName、DevicedId、Flags。
privatevoidrun_start(){ Buttonstart=(Button)findComponentById(ResourceTable.Id_start); start.setClickedListener(newComponent.ClickedListener(){ @Override publicvoidonClick(Componentcomponent){ List
輸入時注意以下幾個點,不要選錯了;如果有標紅,移到上面看看是不是引入包加錯了:



在 onStart 里調(diào)用上面的點擊函數(shù) run_start(),別忘了要定義變量 deviceId:

通過上述步驟,你就能實現(xiàn)跨設備拉起它的主頁面啦!如果想要拉起其他頁面,可以對以下地方進行相應更改。
例如新建一個 Ability 文件和一個 Slilce 文件,然后在這個文件圖二的位置作相應修改,然后修改圖一的位置為這個新建的 Ability。


以上就是我這次的小分享啦。
責任編輯:haq
-
華為
+關(guān)注
關(guān)注
218文章
36057瀏覽量
262309 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2642瀏覽量
69933 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2156瀏覽量
36135
原文標題:1個簡單案例講解:鴻蒙分布式任務調(diào)度
文章出處:【微信號:Huawei_Kirin,微信公眾號:華為麒麟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
七大大模型賦能的無人集群分布式協(xié)同調(diào)度與任務分配系統(tǒng)
大模型ai賦能的無人集群分布式協(xié)同調(diào)度與任務分配系統(tǒng)
SC-3568HA:解鎖鴻蒙全權(quán)限API與分布式能力的工業(yè)控制平臺
如何解決分布式光伏計量難題?
分布式光伏環(huán)境監(jiān)測站的技術(shù)架構(gòu)與應用實踐
【節(jié)能學院】Acrel-1000DP分布式光伏監(jiān)控系統(tǒng)在奉賢平高食品 4.4MW 分布式光伏中應用
分布式光伏發(fā)電監(jiān)測系統(tǒng)技術(shù)方案
分布式光儲項目如何實現(xiàn)穩(wěn)定收益?張家港案例揭示關(guān)鍵運營指標
MCU分布式模塊化自動測量單元支持哪些測量任務?
分布式光伏發(fā)電監(jiān)控系統(tǒng)
曙光存儲領(lǐng)跑中國分布式存儲市場
分布式光纖傳感的用途
兆芯+圖云創(chuàng)智—可信分布式存儲系統(tǒng)解決方案
鴻蒙分布式任務調(diào)度技術(shù)教程
評論