日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于PA的跨設備遷移功能及PageAbility代碼示例工程完全解

想了解更多內(nèi)容,請訪問:

10年積累的成都網(wǎng)站制作、成都網(wǎng)站設計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計制作后付款的網(wǎng)站建設流程,更有黑河免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.

一、跨設備遷移

是什么:是一種基于Ability框架下的Page Ability的能力

遷移動作主要步驟:

  • 源側(cè)設備上的Page請求遷移
  • 源側(cè)設備回調(diào)保存數(shù)據(jù)方法
  • 目標側(cè)設備啟動Page,回調(diào)恢復數(shù)據(jù)方法

請求遷移的兩種方法

  • continue Ability()
  • continueAbilityReversibly()

區(qū)別在于:continueAbility()不能進行回遷,continueAbilityReversibly()可以進行回遷

實現(xiàn)IAbilityContinuation接口

  • onStartContinuation()
  • onSaveData()
  • onRestoreData()
  • onCompleteContinuation()
  • onFailedContinuation()
  • onRemoteTerminated()

文字描述不夠清晰和直接,故用表的形式進行輸出

A作為源側(cè)向目標側(cè)B進行遷移其回調(diào)方法的順序是:

二、PageAbility代碼示例工程

本示例演示了同一Page Ability內(nèi)和不同Page間的AbilitySlice導航,以及Page Ability的跨端遷移。

(一)項目演示

因為示例代碼的字真的小得讓人眼瞎,所以就調(diào)大了一點

跨設備遷移

同PA不同Page間的導航

(二)工程目錄及其Slice直接的關系

(三)同一PA導航與不同Page

同Page

Page內(nèi)的AbilitySlice實例是以堆棧存放的,其頁內(nèi)導航的數(shù)據(jù)傳遞是通過intent傳遞的,源頁面調(diào)用方法setParam(),其值是鍵值對。在跳轉(zhuǎn)頁面通過getParam進行接收(intent.getParam(key:“XX”))

目標頁面向源頁面?zhèn)鬟f數(shù)據(jù),構(gòu)建intent實例(返回數(shù)據(jù)的載體)-賦值給intent類型的resultIntent變量-調(diào)用方法setParam()(鍵值對的形式)-調(diào)用方法setResult()指定實例作為參數(shù)-在原頁面調(diào)用PresentForResult()(請求碼非負整數(shù)作為第三個參數(shù)用于標識某一次頁面導航)-重寫方法onResult(處理返回數(shù)據(jù))-

不同Page

  • 顯式:在觸發(fā)事件中構(gòu)造Intent.OperationBuilder的實例-分別鏈式調(diào)用
 
 
 
 
  1. Operation operation=new Intent.OperationBuilder() 
  2. withBundleName(getBundleName()) 
  3.       .getAbilityName(目標Ability.class.getName()) 
  4.       .build(); 

為了把目標Page的包名和類名都封裝在需要傳遞的Intent類型的實例navigation中,需要調(diào)用navigation的方法setOperation并指定才創(chuàng)建的Intent類型的實例operation為其參數(shù)。最后用startAbility且把navigation作為參數(shù)。

從目標頁面跳轉(zhuǎn)到源頁面且處理數(shù)據(jù),需要在目標調(diào)用getAbility.setParam并設置響應碼(是用來標識一次響應)。之后在原頁面把startAbility變更為startAbilityForResult(響應碼)-把回調(diào)方法onResult替換為onAbilityResult(響應碼),

(四)跨設備遷移

  1. 設備A上的Page請求遷移。
  2. 系統(tǒng)回調(diào)設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的IAbilityContinuation.onStartContinuation()方法,以確認當前是否可以立即遷移。
  3. 如果可以立即遷移,則系統(tǒng)回調(diào)設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的IAbilityContinuation.onSaveData()方法,以便保存遷移后恢復狀態(tài)必須的數(shù)據(jù)。
  4. 如果保存數(shù)據(jù)成功,則系統(tǒng)在設備B上啟動同一個Page,并恢復AbilitySlice棧,然后回調(diào)IAbilityContinuation.onRestoreData()方法,傳遞此前保存的數(shù)據(jù);此后設備B上此Page從onStart()開始其生命周期回調(diào)。
  5. 系統(tǒng)回調(diào)設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的IAbilityContinuation.onCompleteContinuation()方法,通知數(shù)據(jù)恢復成功與否。
  6. 遷移過程中發(fā)生異常,系統(tǒng)回調(diào)設備A上Page及其AbilitySlice棧中所有AbilitySlice實例的IAbilityContinuation.onFailedContinuation()方法,通知遷移過程中發(fā)生異常,并不是所有異常都會回調(diào)FA此方法,僅局限于該接口枚舉的異常。

總結(jié)

跨設備遷移是基于分布式流轉(zhuǎn)操作的。是很有趣和很值得研究的功能

同Page,不同Page,不同設備。三種情況下Page生命周期需要搞懂,需要分清楚Page生命周期回調(diào)方法,與跨設備遷移中實現(xiàn)IAbilityContinuation接口的回調(diào)方法。一定注意源側(cè)與目標側(cè)的方法調(diào)用的順序。

對于基礎的Ability與Slice的關系、Slice與Layout(xml)的關系、Intent的理解得到了提升。

想了解更多內(nèi)容,請訪問:

和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.


分享名稱:基于PA的跨設備遷移功能及PageAbility代碼示例工程完全解
URL分享:http://m.5511xx.com/article/cogheig.html