自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HarmonyOS Sample 之 AbilityInteraction設(shè)備遷移

系統(tǒng) OpenHarmony
本示例演示了Feature Ability的基本交互和跨設(shè)備遷移的功能。在終端A隨機生成一個數(shù)字,并計算這個數(shù)的平方值,然后將這個數(shù)傳遞給終端B,在終端B中同樣計算出結(jié)果。

[[417820]]

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

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

https://harmonyos.51cto.com

AbilityInteraction設(shè)備遷移

介紹

本示例演示了Feature Ability的基本交互和跨設(shè)備遷移的功能。

在終端A隨機生成一個數(shù)字,并計算這個數(shù)的平方值,然后將這個數(shù)傳遞給終端B,在終端B中同樣計算出結(jié)果。

效果展示

搭建環(huán)境

安裝DevEco Studio,詳情請參考DevEco Studio下載。

設(shè)置DevEco Studio開發(fā)環(huán)境,DevEco Studio開發(fā)環(huán)境需要依賴于網(wǎng)絡(luò)環(huán)境,需要連接上網(wǎng)絡(luò)才能確保工具的正常使用,可以根據(jù)如下兩種情況來配置開發(fā)環(huán)境:

如果可以直接訪問Internet,只需進(jìn)行下載HarmonyOS SDK操作。

如果網(wǎng)絡(luò)不能直接訪問Internet,需要通過代理服務(wù)器才可以訪問,請參考配置開發(fā)環(huán)境。

實現(xiàn)步驟

1.config.json聲明使用跨設(shè)備遷移的權(quán)限

  1. "reqPermissions": [ 
  2.     { 
  3.     "name""ohos.permission.DISTRIBUTED_DATASYNC" 
  4.     } 

2.Ability實現(xiàn)IAbilityContinuation接口及相關(guān)方法

  1. public class FirstAbility extends Ability implements IAbilityContinuation { 
  2.     ... 

3.Ability中申請用戶對敏感權(quán)限授權(quán)

  1. @Override 
  2. public void onStart(Intent intent) { 
  3.     super.onStart(intent); 
  4.     super.setMainRoute(FirstAbilitySlice.class.getName()); 
  5.     requestPermission(); 
  6.  
  7. private void requestPermission() { 
  8.     if (verifySelfPermission(SystemPermission.DISTRIBUTED_DATASYNC) != IBundleManager.PERMISSION_GRANTED) { 
  9.         requestPermissionsFromUser(new String[] {SystemPermission.DISTRIBUTED_DATASYNC}, 0); 
  10.     } 

4.Ablity中下面幾個方法全部返回true

  1. @Override 
  2. public boolean onStartContinuation() { 
  3.     return true
  4.  
  5. @Override 
  6. public boolean onSaveData(IntentParams intentParams) { 
  7.     return true
  8.  
  9. @Override 
  10. public boolean onRestoreData(IntentParams intentParams) { 
  11.     return true
  12.  
  13. @Override 
  14. public void onCompleteContinuation(int i) { 
  15.     terminateAbility(); 

5.Slice實現(xiàn)IAbilityContinuation接口及相關(guān)方法

  1. public class FirstAbilitySlice extends AbilitySlice implements LifecycleStateObserver, IAbilityContinuation { 
  2.     ... 

6.Slice按鈕事件監(jiān)聽

  1. private void initComponents() { 
  2.     findComponentById(ResourceTable.Id_enter_second).setClickedListener(component -> startSecondAbility()); 
  3.     findComponentById(ResourceTable.Id_continue_ability).setClickedListener(component -> startContinue()); 
  4.     numberText = (Text) findComponentById(ResourceTable.Id_number); 
  5.     lifecycleState = (Text) findComponentById(ResourceTable.Id_lifecycle_state); 

7.Slice中實現(xiàn)設(shè)備遷移的方法

  1. private void startContinue() { 
  2.     try { 
  3.         continueAbility(); 
  4.     } catch (IllegalStateException | UnsupportedOperationException e) { 
  5.         LogUtil.error(TAG, "startContinue Exception "); 
  6.     } 

8.Slice中實現(xiàn)一下幾個方法,返回true

  1. @Override 
  2. public boolean onStartContinuation() { 
  3.     return true
  4.  
  5. @Override 
  6. public boolean onSaveData(IntentParams intentParams) { 
  7.  
  8.     //設(shè)置設(shè)備遷移后需要恢復(fù)的數(shù)據(jù) 
  9.     intentParams.setParam(CONTINUE_PARAM_KEY_INPUT, inputNum); 
  10.     return true
  11.  
  12. @Override 
  13. public boolean onRestoreData(IntentParams intentParams) { 
  14.     //恢復(fù)數(shù)據(jù) 
  15.     Object object = intentParams.getParam(CONTINUE_PARAM_KEY_INPUT); 
  16.     if (object instanceof Long) { 
  17.         inputNum = (long) object; 
  18.     } 
  19.     return true
  20.  
  21. @Override 
  22. public void onCompleteContinuation(int i) { 
  23.     //設(shè)備遷移完成,關(guān)閉Slice 
  24.     terminate(); 

問題總結(jié)

1.Slice中獲取bundleName:getBundleName()

2.Slice中獲取Ability:getAbility()

3.如果想監(jiān)聽Ability/Slice的生命周期變化,可以實現(xiàn)LifecycleStateObserver接口,實現(xiàn)onStateChanged方法

  1. public class FirstAbilitySlice extends AbilitySlice implements LifecycleStateObserver{ 
  2.     ... 
  3.  
  4. @Override 
  5. public void onStateChanged(Lifecycle.Event event, Intent intent) { 
  6.     lifecycleState.setText(lifecycleState.getText() + System.lineSeparator() + event.name()); 

4.Slice中啟動另外一個Ability的方法也可以用setElement

  1. private void startSecondAbility() { 
  2.     Intent intent = new Intent(); 
  3.     intent.setElement(new ElementName("", getBundleName(), SecondAbility.class.getName())); 
  4.     intent.setParam(Const.MESSAGE_KEY_SQUARED, inputNum); 
  5.     startAbilityForResult(intent, REQUEST_CODE_TO_ABILITY_B); 

5.Slice中在onAbilityResult方法中處理其它Abilty返回的結(jié)果

  1. /** 
  2.  * 
  3.  * @param requestCode  發(fā)出的請求碼,用來識別是自己的請求 
  4.  * @param resultCode   收到的結(jié)果碼,用來校驗對端的結(jié)果 
  5.  * @param resultData   返回的數(shù)據(jù) 
  6.  */ 
  7. @Override 
  8. protected void onAbilityResult(int requestCode, int resultCode, Intent resultData) { 
  9.  
  10.     //使用switch邏輯語句判斷 
  11.     switch (requestCode) { 
  12.  
  13.         //是自己發(fā)出去的請求碼 
  14.         case REQUEST_CODE_TO_ABILITY_B: 
  15.             //是雙方約定的結(jié)果碼 
  16.             if (resultCode == Const.RESULT_CODE_FROM_ABILITY_B) { 
  17.                 //根據(jù)key獲取指定類型的參數(shù) 
  18.                 long outputNum = resultData.getLongParam(Const.MESSAGE_KEY_SQUARED, 0); 
  19.                  
  20.                 numberText.setText(String.valueOf(outputNum)); 
  21.             } 
  22.             break; 
  23.         default
  24.             break; 
  25.     } 

文章相關(guān)附件可以點擊下面的原文鏈接前往下載

AbilityInteraction.zip

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

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

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-07-08 09:42:04

鴻蒙HarmonyOS應(yīng)用

2021-09-17 14:43:54

鴻蒙HarmonyOS應(yīng)用

2021-09-24 09:25:01

鴻蒙HarmonyOS應(yīng)用

2021-09-15 14:55:49

鴻蒙HarmonyOS應(yīng)用

2021-11-23 09:58:35

鴻蒙HarmonyOS應(yīng)用

2021-09-22 09:42:41

鴻蒙HarmonyOS應(yīng)用

2021-11-02 10:10:49

鴻蒙HarmonyOS應(yīng)用

2021-12-10 15:06:56

鴻蒙HarmonyOS應(yīng)用

2021-12-02 10:11:44

鴻蒙HarmonyOS應(yīng)用

2021-11-30 14:51:11

鴻蒙HarmonyOS應(yīng)用

2021-07-29 14:03:35

鴻蒙HarmonyOS應(yīng)用

2021-08-24 15:13:06

鴻蒙HarmonyOS應(yīng)用

2021-11-03 09:51:45

鴻蒙HarmonyOS應(yīng)用

2021-06-16 15:18:03

鴻蒙HarmonyOS應(yīng)用

2021-01-06 11:21:56

鴻蒙HarmonyOS應(yīng)用開發(fā)

2022-05-19 15:40:37

配網(wǎng)開發(fā)設(shè)備開發(fā)

2010-12-27 09:59:05

802.11n無線802.11n遷移

2009-09-27 13:00:56

Hibernate S

2020-12-30 11:08:50

鴻蒙HarmonyOShelloWorld

2018-02-02 16:15:02

Hadoop數(shù)據(jù)遷移集群
點贊
收藏

51CTO技術(shù)棧公眾號