成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于PA的跨設備遷移功能及PageAbility代碼示例工程完全解

開發 前端
跨設備遷移是基于分布式流轉操作的。是很有趣和很值得研究的功能,同Page,不同Page,不同設備。

[[416894]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

一、跨設備遷移

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

遷移動作主要步驟:

  • 源側設備上的Page請求遷移
  • 源側設備回調保存數據方法
  • 目標側設備啟動Page,回調恢復數據方法

請求遷移的兩種方法

  • continue Ability()
  • continueAbilityReversibly()

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

實現IAbilityContinuation接口

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

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

A作為源側向目標側B進行遷移其回調方法的順序是:

二、PageAbility代碼示例工程

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

(一)項目演示

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

跨設備遷移

同PA不同Page間的導航

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

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

同Page

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

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

不同Page

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

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

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

(四)跨設備遷移

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

總結

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

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

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

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-12-21 09:56:47

鴻蒙HarmonyOS應用

2021-08-04 14:32:16

鴻蒙HarmonyOS應用

2021-08-13 13:53:23

鴻蒙HarmonyOS應用

2021-06-16 15:18:03

鴻蒙HarmonyOS應用

2010-06-30 12:40:47

Linux SNMP

2021-08-16 14:42:28

鴻蒙HarmonyOS應用

2010-07-05 11:32:54

HART協議

2021-01-06 11:21:56

鴻蒙HarmonyOS應用開發

2009-09-04 15:50:55

RadioButton

2013-05-29 09:29:07

OSI傳輸層TCP協議

2017-10-11 14:45:58

Linuxinotify功能實現原理

2011-11-24 11:24:45

iCloud云計算蘋果

2022-09-08 15:18:51

Ability鴻蒙

2010-03-18 17:24:31

無線ZigBee網絡

2010-07-09 11:37:29

動態路由選擇協議

2010-06-30 11:17:53

SNMP監測交換機

2010-06-24 16:47:45

Linux Chgrp

2011-09-14 09:56:48

HTML 5

2024-09-26 10:41:31

2021-10-28 14:48:46

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线播放视频 | 国产农村一级国产农村 | 一区二区三区国产精品 | 久久久综合精品 | 日韩成人精品一区二区三区 | 国产一区二区久久 | 看a网站| 国产一区二区三区四区五区3d | 欧美日韩中文字幕 | 欧美精品国产精品 | 91在线视频免费观看 | 日本亚洲一区二区 | 久久久精品一区二区 | 久久黄色网 | 羞羞色视频 | 操操日| 一区二区三区国产视频 | 国产精品免费高清 | 久久亚洲综合 | 中文字幕动漫成人 | 色天堂影院 | 欧美日韩国产中文 | 国产欧美精品一区二区三区 | 日韩高清中文字幕 | 91精品国产综合久久久动漫日韩 | 国产第一亚洲 | 日韩在线视频一区二区三区 | 91精品国产91久久久久久吃药 | 国偷自产av一区二区三区 | 99精品视频在线 | 黄色在线免费看 | 日本一道本 | 精品免费国产一区二区三区 | 女同av亚洲女人天堂 | 日韩av美女电影 | 欧美日韩精品在线免费观看 | 亚洲精品一区二区另类图片 | 亚洲精品免费视频 | 国产精品一二三区 | 在线播放第一页 | 九九成人 |