什么是HarmonyOS“跨設備遷移”?
HarmonyOS“跨設備遷移”是指將承載業務的Page在同一用戶的不同設備間遷移,以便支持用戶業務無縫切換的訴求。“跨設備遷移”實現了業務跨設備流轉功能,打破業務受限單設備的壁壘。
典型應用場景舉例:
導航場景
如果用戶駕車出行,上車前,在手機上規劃好導航路線;上車后,導航自動遷移到車機和車載音箱;下車后,導航自動遷移回手機。如果用戶騎車出行,在手機上規劃好導航路線,騎行時手表可以接續導航。
辦公場景
大屏上呈現的文檔,PAD或者手機可以跨設備編輯。
娛樂場景
電影視頻從客廳電視到房間PAD跨設備接續播放。
HarmonyOS“跨設備遷移”的技術原理
HarmonyOS“跨設備遷移”需要用到一項關鍵技術——“分布式任務調度”。
分布式任務調度
“跨設備遷移”依賴HarmonyOS系統中分布式任務調度的“業務遷移能力”。
“分布式任務調度”基于分布式軟總線、分布式數據管理、分布式Profile和分布式安全認證這四項技術特性,構建統一的分布式服務管理(發現、同步、注冊、調用)機制,支持對跨設備的應用進行遠程啟動、遠程調用、遠程連接以及遷移等操作。
● 分布式軟總線實現了近場設備間統一的分布式通信能力管理,提供不區分鏈路的設備發現、連接、組網和傳輸能力。開發者可無需關注設備間組網方式與底層協議,集中精力實現業務邏輯功能。
● 分布式數據管理中的數據同步能力可實現組網內的設備信息共享實時同步,如設備上下線、設備信息列表等,方便多設備信息實時同步。
● 分布式Profile實現多設備Profile的統一查詢、訂閱能力,拉通多設備之間的管理。
● 分布式安全認證提供應用完整性保護、應用權限管理、設備認證、密鑰管理等服務,為業務提供安全保障基礎。
分布式任務調度基于以上技術特性基座,構建統一的分布式服務管理機制,完成了分布式組網內設備中的系統服務信息同步及管理,包括服務注冊、服務發現、服務同步和服務調度。
在業務發起“跨設備遷移”請求時,分布式調度系統根據調度決策機制選擇目標設備,并獲取對應設備的系統服務信息,在系統服務成功調度后,向目標設備發起遠程啟動、遠程調用、遠程連接和遠程遷移,由對應設備的分布式任務調度系統完成本地化的任務執行。
HarmonyOS“跨設備遷移”的具體實現流程
HarmonyOS“跨設備遷移”依賴“Ability”實現,這里我們簡單介紹一下“Ability”。Ability
Ability是應用所具備能力的抽象,HarmonyOS支持應用以Ability為單位進行部署。業務“跨設備遷移”的基礎粒度也是Ability,具體實現是在不同設備間同一應用的同名Ability之間進行遷移。
● Ability概述
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-ability-overview-0000000000029852
HarmonyOS的應用由一個或多個FA(Feature Ability)或PA(Particle Ability)組成。
● FA有UI界面,提供與用戶交互的能力
FA僅支持Page Ability,一個Page實例可以包含一組相關頁面,每個頁面用一個AbilitySlice實例表示。
● Page Ability基本概念
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-concept-0000000000033573● PA無UI界面,提供后臺運行任務的能力以及統一的數據訪問抽象
PA支持Service Ability和Data Ability:
Service Ability:用于提供后臺運行任務的能力。
Data Ability:用于對外部提供統一的數據訪問抽象。
Ability的生命周期主要用于Page實例的狀態機管理,系統管理或用戶操作等行為均會引起Page實例在其生命周期的不同狀態之間進行轉換。Ability Class提供的回調機制能夠讓Page及時感知外界變化,從而正確地應對狀態變化。
● Page Ability生命周期
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-page-lifecycle-0000000000029840
“跨設備遷移”的處理依賴Ability的生命周期管理來完成Page的狀態切換,同時Page在生命周期回調中處理數據的保存與恢復。
● onStart()
當系統首次創建Page實例時觸發。應用須重寫該方法,并在此初始化配置為展示AbilitySlice。Page在此后進入INACTIVE狀態,用戶不可交互。
● onActive()
當Page從INACTIVE狀態切換到前臺時觸發。Page在此之后進入ACTIVE狀態,該狀態下,應用與用戶處于可交互的狀態。
● onInactive()
當Page即將進入不可交互狀態時會被觸發,Page在此之后進入INACTIVE狀態,應用與用戶不可交互。
● onBackground()
當Page不再對用戶可見時觸發。Page在此之后進入BACKGROUND狀態。
● onForeground()
當Page從BACKGROUND狀態重新回到前臺時觸發。Page在此之后回到INACTIVE狀態。
● onStop()當系統將要銷毀Page時觸發。遷移流程圍繞Ability的生命周期,我們來看看業務“跨設備遷移”的具體流程。
業務“跨設備遷移”的本質即通過分布式組網把一個設備的“Ability運行狀態”遷移到另外一臺設備上。
程序中“跨設備遷移”通過調用Page Ability的遷移接口ContinueAbility,將設備A的業務無縫遷移到指定設備B中。其中,支持遷移的Page以及此Page所包含的所有AbilitySlice必須實現IAbilityContinuation接口。具體接口代碼如下:
public interface IAbilityContinuation { //是否可遷移 boolean onStartContinuation();
//保存數據 boolean onSaveData(IntentParams var1);
//恢復數據 boolean onRestoreData(IntentParams var1);
//遷移完成 void onCompleteContinuation(int var1);
default void onRemoteTerminated() { throw new RuntimeException(“Stub!”); }}
“跨設備遷移”關鍵步驟:
1設備A上的Page調用continueAbility請求遷移。2HarmonyOS處理遷移任務,并回調設備A上Page的保存數據方法onSaveData,用于保存遷移必須的Page數據。3HarmonyOS將Page數據從設備A遷移到設備B。4HarmonyOS在設備B上啟動同一個Page,并回調onRestoreData恢復Page數據。
“跨設備遷移”數據流轉過程:1設備A上的Page請求遷移到設備B(調用continueAbility)后,HarmonyOS回調設備A上該Page及其AbilitySlice棧中所有AbilitySlice實例的onStartContinuation()方法,以確認當前是否可以遷移。True代表可執行遷移。
2若可執行遷移,則HarmonyOS回調設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的onSaveData()方法,由該Page保存必須傳遞到接收端設備B的Page狀態數據。3若數據保存成功,則分布式調度系統通過RPC通信,在設備B上啟動同一個Page,并恢復對應的AbilitySlice棧,然后回調設備B上該Page的onRestoreData()方法,傳遞此前保存的數據;
此后設備B上此Page從onStart()開始其生命周期回調。4HarmonyOS回調設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的onCompleteContinuation()方法,通知設備A遷移結果即數據恢復成功與否。
了解完具體流程,下面我們給大家推薦一個HarmonyOS“跨設備遷移”動手實踐的Demo。
HarmonyOS“跨設備遷移”動手實例
我們為大家帶來一個辦公場景下“基于分布式的協同郵件編輯”Demo,作為“跨設備遷移”應用的開發實例。該實例通過模擬不同設備間協同的郵件內容編輯來做一個“內容”跨設備遷移的演示。目前該Demo已在HarmonyOS官網Codelabs中上線,感興趣的同學可以參考其具體流程,動手開發一個“跨設備遷移”郵箱Demo。
● 官網鏈接:
https://developer.huawei.com/consumer/cn/codelabsPortal/carddetails/Distributed-Mail
通過這一系列的解析,開發者們是不是對HarmonyOS“跨設備遷移”技術有了更深的了解,未來我們還將為大家帶來更多HarmonyOS相關技術解讀,也歡迎大家后臺留言,告訴我們更多你想聽的技術內容,我們將逐一為大家奉上~
編輯:jq
-
PA
+關注
關注
3文章
245瀏覽量
46876 -
HarmonyOS
+關注
關注
79文章
1977瀏覽量
30224
原文標題:HarmonyOS “跨設備遷移”原理解析
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論