本文是對分布式任務調度的一個技術教程,以一個簡單的案例來講解。
正文部分分為兩個部分:
第一部分是對分布式任務調度的簡單概述
第二部分是分布式任務調度的一個簡單案例(跨設備 FA 的拉起)
分布式任務調度的簡單概述
Ability 可以分為 FA(Feature Ability)和 PA(Particle Ability)兩種類型。
①FA 支持 Page Ability
Page 模板:FA 唯一支持的模板,用于提供與用戶交互的能力。一個 Page 實例可以包含一組相關頁面,每個頁面用一個 AbilitySlice 實例表示。
②PA 支持 Service Ability 和 Data Ability
Service 模板:用于提供后臺運行任務的能力。Data 模板:用于對外部提供統一的數據訪問抽象。
根據 Ability 模板及意圖的不同,分布式任務調度向開發者提供以下六種能力:
啟動遠程 FA
啟動遠程 PA
關閉遠程 PA
連接遠程 PA
斷開連接遠程 PA
FA 跨設備遷移
“跨設備FA的拉起”的教程
①創建項目
DevEco Studio 下載安裝成功后,打開 DevEco Studio,點擊左上角的 File,點擊 New,再選擇 New Project。
選擇 Empty Ability(Java),然后點擊 Next,給項目命名 distribute_FA,選擇設備類型 Phone,最后點擊 Finish。
②申請權限
在 entry>src>main>config.json 文件中最下方"launchType": "standard"后面的中括號后且在上方的"module"的花括號內添加以下代碼添加所需要的分布式權限:
"reqPermissions":[ { "name":"ohos.permission.DISTRIBUTED_DATASYNC" }, { "name":"ohos.permission.GET_DISTRIBUTED_DEVICE_INFO" } ]
第一個權限是允許不同設備間的數據交換(敏感權限)。第二個權限是允許獲取分布式組網內的設備列表和設備信息(非敏感權限)。應用在使用對應服務的能力或數據時,需要申請對應權限。
已在 config.json 文件中聲明的非敏感權限,會在應用安裝時自動授予,該類權限的授權方式為系統授權(system_grant)。
敏感權限需要應用動態申請,通過運行時發送彈窗的方式請求用戶授權,該類權限的授權方式為用戶授權(user_grant)。
在 entry>src>main>Java>MainAbility 文件里添加敏感權限(非敏感權限在該文件里可加可不加),在 onStart 函數里添加以下代碼:
requestPermissionsFromUser(newString[]{"ohos.permission.DISTRIBUTED_DATASYNC"},0);
如果添加的權限比較多可以像這樣新建一個字符串數組,后面的 0 是請求碼(requestCode),是用來標識請求的來源(這個值任自己設定)。
③界面布局
在 entry>src>main>resources>base>layout>ability_main.xml 文件里添加一個按鈕組件,加入唯一標識符 id 并配置好其他相應的屬性,代碼如下:
為了方便+好看,我把上方文本組件的 id 跟 text 改了一下:
ohos:id="$+id:text" ohos:text="分布式任務調度"
④設置點擊事件
在 entry>src>main>Java>slice>MainAbilitySlice 文件里的 onStart 下方定義一個函數來設置按鈕的點擊事件:
獲取分布式組網內的設備列表和設備信息(其中 FLAG_GET_ONLINE_DEVICE 是獲取在線設備,可以根據需要選擇離線 OFFLINE 或者全部設備 ALL)。
get(0) 是指列表 devicelist 第一個元素。
operation 是用來封裝與 intent 相關的參數和操作,這里涉及的是 AbilityName、BundleName、DevicedId、Flags。
privatevoidrun_start(){ Buttonstart=(Button)findComponentById(ResourceTable.Id_start); start.setClickedListener(newComponent.ClickedListener(){ @Override publicvoidonClick(Componentcomponent){ List
輸入時注意以下幾個點,不要選錯了;如果有標紅,移到上面看看是不是引入包加錯了:
在 onStart 里調用上面的點擊函數 run_start(),別忘了要定義變量 deviceId:
通過上述步驟,你就能實現跨設備拉起它的主頁面啦!如果想要拉起其他頁面,可以對以下地方進行相應更改。
例如新建一個 Ability 文件和一個 Slilce 文件,然后在這個文件圖二的位置作相應修改,然后修改圖一的位置為這個新建的 Ability。
以上就是我這次的小分享啦。
責任編輯:haq
-
華為
+關注
關注
216文章
34462瀏覽量
251820 -
鴻蒙系統
+關注
關注
183文章
2634瀏覽量
66364 -
HarmonyOS
+關注
關注
79文章
1977瀏覽量
30227
原文標題:1個簡單案例講解:鴻蒙分布式任務調度
文章出處:【微信號:Huawei_Kirin,微信公眾號:華為麒麟】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論