【HarmonyOS】應(yīng)用開發(fā)第八章-分布式應(yīng)用開發(fā)_第1頁(yè)
【HarmonyOS】應(yīng)用開發(fā)第八章-分布式應(yīng)用開發(fā)_第2頁(yè)
【HarmonyOS】應(yīng)用開發(fā)第八章-分布式應(yīng)用開發(fā)_第3頁(yè)
【HarmonyOS】應(yīng)用開發(fā)第八章-分布式應(yīng)用開發(fā)_第4頁(yè)
【HarmonyOS】應(yīng)用開發(fā)第八章-分布式應(yīng)用開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章HarmonyOS分布式應(yīng)用開發(fā)武漢大學(xué)計(jì)算機(jī)學(xué)院趙小剛核心概念流轉(zhuǎn)架構(gòu)分布式任務(wù)調(diào)度跨端遷移功能開發(fā)多端協(xié)同功能開發(fā)核心概念跨端遷移:一種實(shí)現(xiàn)用戶應(yīng)用程序流轉(zhuǎn)的技術(shù)方案,指在A端運(yùn)行的FA遷移到B端上,完成遷移后,B端FA繼續(xù)任務(wù),而A端應(yīng)用退出。多端協(xié)同:一種實(shí)現(xiàn)用戶應(yīng)用程序流轉(zhuǎn)的技術(shù)方案,指多端上的不同F(xiàn)A/PA同時(shí)運(yùn)行、或者交替運(yùn)行實(shí)現(xiàn)完整的業(yè)務(wù);或者,多端上的相同F(xiàn)A/PA同時(shí)運(yùn)行實(shí)現(xiàn)完整的業(yè)務(wù)。多個(gè)設(shè)備作為一個(gè)整體為用戶提供比單設(shè)備更加高效、沉浸的體驗(yàn)。流轉(zhuǎn)架構(gòu)特性在HarmonyOS中,流轉(zhuǎn)泛指多設(shè)備分布式操作。流轉(zhuǎn)能力打破設(shè)備界限,多設(shè)備聯(lián)動(dòng),使用戶應(yīng)用程序可分可合、可流轉(zhuǎn),流轉(zhuǎn)架構(gòu)對(duì)搭載HarmonyOS的多設(shè)備構(gòu)筑的“超級(jí)虛擬終端”提供統(tǒng)一的組件管理能力,為應(yīng)用屏蔽硬件差異;支持遠(yuǎn)程啟動(dòng)、遠(yuǎn)程調(diào)用、業(yè)務(wù)無縫遷移等分布式任務(wù)。流轉(zhuǎn)架構(gòu)在底層實(shí)現(xiàn)Ability(分布式操作的基本組件)跨設(shè)備的啟動(dòng)/關(guān)閉、連接及斷開連接以及遷移等能力,實(shí)現(xiàn)跨設(shè)備的組件管理。Ability的調(diào)度啟動(dòng)和關(guān)閉:向開發(fā)者提供管理遠(yuǎn)程Ability的能力,即支持啟動(dòng)Page模板的Ability,以及啟動(dòng)、關(guān)閉Service和Data模板的Ability。連接和斷開連接:向開發(fā)者提供跨設(shè)備控制服務(wù)(Service和Data模板的Ability)的能力,開發(fā)者可以通過與遠(yuǎn)程服務(wù)連接及斷開連接實(shí)現(xiàn)獲取或注銷跨設(shè)備管理服務(wù)的對(duì)象,達(dá)到和本地一致的服務(wù)調(diào)度。遷移能力:向開發(fā)者提供跨設(shè)備業(yè)務(wù)的無縫遷移能力,開發(fā)者可以通過調(diào)用Page模板Ability的遷移接口,將本地業(yè)務(wù)無縫遷移到指定設(shè)備中,打通設(shè)備間壁壘。流轉(zhuǎn)應(yīng)用場(chǎng)景導(dǎo)航場(chǎng)景:如果用戶駕車出行,上車前,在手機(jī)上規(guī)劃好導(dǎo)航路線;上車后,導(dǎo)航自動(dòng)遷移到車機(jī)和車載音箱;下車后,導(dǎo)航自動(dòng)遷移回手機(jī)。如果用戶騎車出行,在手機(jī)上規(guī)劃好導(dǎo)航路線,騎行時(shí)手表可以接續(xù)導(dǎo)航。外賣場(chǎng)景:在手機(jī)上點(diǎn)外賣后,可以將訂單信息遷移到手表上,隨時(shí)查看外賣的配送狀態(tài)。核心概念流轉(zhuǎn)架構(gòu)分布式任務(wù)調(diào)度跨端遷移功能開發(fā)多端協(xié)同功能開發(fā)流轉(zhuǎn)架構(gòu)HarmonyOS流轉(zhuǎn)提供了一組API庫(kù),可讓用戶應(yīng)用程序更輕松、快捷地完成流轉(zhuǎn)體驗(yàn)。HarmonyOS流轉(zhuǎn)架構(gòu)有如下優(yōu)勢(shì):統(tǒng)一流轉(zhuǎn)管理UI,支持設(shè)備發(fā)現(xiàn)、選擇以及任務(wù)管理。支持遠(yuǎn)程服務(wù)調(diào)用等能力,可輕松設(shè)計(jì)業(yè)務(wù)。支持多個(gè)應(yīng)用同時(shí)進(jìn)行流轉(zhuǎn)。支持不同形態(tài)設(shè)備,如手機(jī)、平板、TV、手表等。流轉(zhuǎn)架構(gòu)

核心模塊流轉(zhuǎn)任務(wù)管理服務(wù):在流轉(zhuǎn)發(fā)起端,接受用戶應(yīng)用程序注冊(cè),提供流轉(zhuǎn)入口、狀態(tài)顯示、退出流轉(zhuǎn)等管理能力。分布式任務(wù)調(diào)度:提供遠(yuǎn)程服務(wù)啟動(dòng)、遠(yuǎn)程服務(wù)連接、遠(yuǎn)程遷移等能力,并通過不同能力組合,支撐用戶應(yīng)用程序完成跨端遷移或多端協(xié)同的業(yè)務(wù)體驗(yàn)。分布式安全:提供端到端的加密通道,為用戶應(yīng)用程序提供安全的跨端傳輸機(jī)制,保證“正確的人,通過正確的設(shè)備,正確地使用數(shù)據(jù)”。分布式軟總線:使用基于手機(jī)、平板、智能穿戴、智慧屏等分布式設(shè)備的統(tǒng)一通信基座,為設(shè)備之間的互聯(lián)互通提供統(tǒng)一的分布式通信能力。跨端遷移關(guān)鍵流程流轉(zhuǎn)準(zhǔn)備:設(shè)備A上的應(yīng)用向流轉(zhuǎn)任務(wù)管理服務(wù)注冊(cè)一個(gè)流轉(zhuǎn)回調(diào);流轉(zhuǎn)開始:設(shè)備A上的應(yīng)用通過調(diào)用分布式任務(wù)調(diào)度的能力,實(shí)現(xiàn)應(yīng)用遷移:系統(tǒng)回調(diào)設(shè)備A上FA的onStartContinuation()方法,以確認(rèn)當(dāng)前FA是否可以開始遷移,onStartContinuation方法返回true,表示當(dāng)前FA可以開始遷移。如果可以開始遷移,則系統(tǒng)回調(diào)設(shè)備A上FA的onSaveData()方法,以便保存遷移后恢復(fù)狀態(tài)必須的數(shù)據(jù),數(shù)據(jù)保存在函數(shù)的savedData參數(shù)中。如果保存數(shù)據(jù)成功,則系統(tǒng)在設(shè)備B上啟動(dòng)同一個(gè)FA,然后回調(diào)onRestoreData()方法,傳遞設(shè)備A上FA保存的數(shù)據(jù),應(yīng)用可在此方法恢復(fù)業(yè)務(wù)狀態(tài);此后設(shè)備B上此FA從onInit()開始其生命周期回調(diào)。系統(tǒng)回調(diào)設(shè)備A上FA的onCompleteContinuation()方法,通知應(yīng)用遷移成功。遷移操作完成,參數(shù)code返回結(jié)果??缍诉w移關(guān)鍵流程多端協(xié)同關(guān)鍵流程流轉(zhuǎn)進(jìn)行:設(shè)備A上的應(yīng)用通過調(diào)用分布式任務(wù)調(diào)度的能力,如startAbility,connectAbility等,向設(shè)備B的應(yīng)用發(fā)起多端協(xié)同。協(xié)同開始設(shè)備A調(diào)用startAbility啟動(dòng)設(shè)備B的FA和PA;設(shè)備A調(diào)用connectAbility連接設(shè)備B的PA:在設(shè)備A上通過本地應(yīng)用提供的連接按鈕,連接設(shè)備B上指定的PA。連接后,通過其他功能相關(guān)按鈕實(shí)現(xiàn)控制對(duì)端PA的能力。通過連接關(guān)系,開發(fā)者可以實(shí)現(xiàn)跨設(shè)備的同步服務(wù)調(diào)度,實(shí)現(xiàn)如大型計(jì)算任務(wù)互助等價(jià)值場(chǎng)景。協(xié)同結(jié)束設(shè)備A調(diào)用disconnectAbility斷開與設(shè)備B的PA的連接:將之前已連接的PA斷開連接。設(shè)備A調(diào)用stopAbility關(guān)閉設(shè)備B的PA:關(guān)閉設(shè)備B上指定的PA。多端協(xié)同關(guān)鍵流程約束與限制開發(fā)者需要在Intent中設(shè)置支持分布式的標(biāo)記(例如:Intent.FLAG_ABILITYSLICE_MULTI_DEVICE表示該應(yīng)用支持分布式調(diào)度),否則將無法獲得分布式能力。開發(fā)者通過在config.json中的reqPermissions字段里添加多設(shè)備協(xié)同訪問的權(quán)限申請(qǐng):三方應(yīng)用使用{"name":"ohos.permission.DISTRIBUTED_DATASYNC"}。核心概念流轉(zhuǎn)架構(gòu)分布式任務(wù)調(diào)度跨端遷移功能開發(fā)多端協(xié)同功能開發(fā)分布式任務(wù)調(diào)度的六種能力開發(fā)者在應(yīng)用中集成分布式調(diào)度能力,通過調(diào)用指定能力的分布式接口,實(shí)現(xiàn)跨設(shè)備能力調(diào)度。根據(jù)Ability模板及意圖的不同,分布式任務(wù)調(diào)度向開發(fā)者提供以下六種能力:?jiǎn)?dòng)遠(yuǎn)程FA、啟動(dòng)遠(yuǎn)程PA、關(guān)閉遠(yuǎn)程PA、連接遠(yuǎn)程PA、斷開連接遠(yuǎn)程PA和FA跨設(shè)備遷移。連接遠(yuǎn)程PAconnectAbility(Intentintent,IAbilityConnectionconn)接口提供連接指定設(shè)備上PA的能力,Intent中指定待連接PA的設(shè)備deviceId、bundleName和abilityName。當(dāng)連接成功后,通過在conn定義的onAbilityConnectDone回調(diào)中獲取對(duì)端PA的服務(wù)代理,兩者的連接關(guān)系則由conn維護(hù)。具體的參數(shù)定義如下表所示:?jiǎn)?dòng)遠(yuǎn)程FA/PAstartAbility(Intentintent)接口提供啟動(dòng)指定設(shè)備上FA和PA的能力,Intent中指定待啟動(dòng)FA/PA的設(shè)備deviceId、bundleName和abilityName。具體參數(shù)定義如下:分布式調(diào)度平臺(tái)還會(huì)提供與上述功能相對(duì)應(yīng)的斷開遠(yuǎn)程PA的連接和關(guān)閉遠(yuǎn)程PA的接口,相關(guān)的參數(shù)與連接、啟動(dòng)的接口類似。斷開遠(yuǎn)程PA連接:disconnectAbility?(IAbilityConnectionconn)。關(guān)閉遠(yuǎn)程PA:stopAbility?(Intentintent)。遷移FAcontinueAbility()接口提供將本地FA遷移到指定設(shè)備上的能力。需要實(shí)現(xiàn)IAbilityContinuation及其方法,才可以實(shí)現(xiàn)FA遷移。IAbilityContinuation的方法有:onStartContinuation()

Page請(qǐng)求遷移后,系統(tǒng)首先回調(diào)此方法,開發(fā)者可以在此回調(diào)中決策當(dāng)前是否可以執(zhí)行遷移,比如,彈框讓用戶確認(rèn)是否開始遷移。onSaveData()如果onStartContinuation()返回true,則系統(tǒng)回調(diào)此方法,開發(fā)者在此回調(diào)中保存必須傳遞到另外設(shè)備上以便恢復(fù)Page狀態(tài)的數(shù)據(jù)。接口IAbilityContinuation的方法onRestoreData()源側(cè)設(shè)備上Page完成保存數(shù)據(jù)后,系統(tǒng)在目標(biāo)側(cè)設(shè)備上回調(diào)此方法,開發(fā)者在此回調(diào)中接受用于恢復(fù)Page狀態(tài)的數(shù)據(jù)。注意,在目標(biāo)側(cè)設(shè)備上的Page會(huì)重新啟動(dòng)其生命周期,無論其啟動(dòng)模式如何配置。且系統(tǒng)回調(diào)此方法的時(shí)機(jī)在onStart()之前。onCompleteContinuation()

目標(biāo)側(cè)設(shè)備上恢復(fù)數(shù)據(jù)一旦完成,系統(tǒng)就會(huì)在源側(cè)設(shè)備上回調(diào)Page的此方法,以便通知應(yīng)用遷移流程已結(jié)束。開發(fā)者可以在此檢查遷移結(jié)果是否成功,并在此處理遷移結(jié)束的動(dòng)作,例如,應(yīng)用可以在遷移完成后終止自身生命周期。核心概念流轉(zhuǎn)架構(gòu)分布式任務(wù)調(diào)度跨端遷移功能開發(fā)多端協(xié)同功能開發(fā)跨端遷移功能開發(fā)跨設(shè)備遷移(下文簡(jiǎn)稱“遷移”)支持將Page在同一用戶的不同設(shè)備間遷移,以便支持用戶無縫切換的訴求。以Page從設(shè)備A遷移到設(shè)備B為例,遷移動(dòng)作主要步驟如下:設(shè)備A上的Page請(qǐng)求遷移。HarmonyOS處理遷移任務(wù),并回調(diào)設(shè)備A上Page的保存數(shù)據(jù)方法,用于保存遷移必須的數(shù)據(jù)。HarmonyOS在設(shè)備B上啟動(dòng)同一個(gè)Page,并回調(diào)其恢復(fù)數(shù)據(jù)方法。以下詳細(xì)代碼說明如何開發(fā)具有遷移功能的Page。遷移示例代碼tryContinueAbility:asyncfunction(){letresult=awaitFeatureAbility.continueAbility();("result:"+JSON.stringify(result));},onStartContinuation(){("onStartContinuation");returntrue;},onCompleteContinuation(code){("CompleteContinuation:code="+code);},onSaveData(saveData){vardata=this.continueAbilityData;Object.assign(saveData,data)},onRestoreData(restoreData){this.continueAbilityData=restoreData;},遷移運(yùn)行效果核心概念流轉(zhuǎn)架構(gòu)分布式任務(wù)調(diào)度跨端遷移功能開發(fā)多端協(xié)同功能開發(fā)多端協(xié)同功能開發(fā)電視機(jī)遙控器啟動(dòng)遙控器點(diǎn)擊TV端主界面搜索框,會(huì)出現(xiàn)選擇手機(jī)遙控器的彈框。用戶選擇需要的手機(jī)遙控設(shè)備,點(diǎn)擊后會(huì)立刻拉起手機(jī)遙控輸入界面。publicvoidopenRemoteAbility(StringdeviceId,StringbundleName,StringabilityName){Intentintent=newIntent();intent.setParam("localDeviceId",localDeviceId);Operationoperation=newIntent.OperationBuilder().withDeviceId(deviceId).withBundleName(bundleName).withAbilityName(abilityName).withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE).build();intent.setOperation(operation);abilitySlice.startAbility(intent);連接遠(yuǎn)程智慧屏遙控界面FA在啟動(dòng)過程中,通過initConnManager()方法,與TV端RemoteService建立連接。IntentconnectPaIntent=newIntent();Operationoperation=newIntent.OperationBuilder()bundlename....build();connectPaIntent.setOperation(operation);conn=newIAbilityConnection(){@OverridepublicvoidonAbilityConnectDone(ElementNameelementName,IRemoteObjectremote,intresultCode){proxy=newMyRemoteProxy(remote);}@OverridepublicvoidonAbilityDisconnectDone(ElementNameelementName,intresultCode){proxy=null;}};context.connectAbility(connectPaIntent,conn);}}遙控器與智慧屏交互服務(wù)端的RemoteService為ServiceAbility,專門處理發(fā)送到服務(wù)端的客戶請(qǐng)求。RemoteService處理請(qǐng)求是通過RemoteObject的子類MyRemote實(shí)現(xiàn)的。publicclassMyRemoteextendsRemoteObjectimplementsIRemoteBroker{

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論