鴻蒙HarmonyOS開發(fā)中分布式流轉開發(fā)常見報錯FAQ
HarmonyOS開發(fā)中分布式協(xié)同是非常重要的一個功能,大家在剛接觸的時候可能會出現(xiàn)各種各樣的錯誤。我在此總結下在進行分布式流轉開發(fā)過程中常見的一些坑和解決辦法,希望可以幫助到各位。
1、查找不到設備列表的報錯,如下圖
解決措施如下:
(1)檢查wifi是否在同一網(wǎng)絡
(2)華為賬號是否登錄,設備是否都是登錄的相同的華為賬號
(3)手機設置中“分布式協(xié)同”是否開啟。
2、This ability do not support continuation.
該錯誤的原因是因為只在Slice中實現(xiàn)了IAbilityContinuation接口,而沒有在Slice對應的ability中也實現(xiàn)該接口,解決方案就是在ability中實現(xiàn)IAbilityContinuation接口
- package com.xdw.demo;
- import com.xdw.demo.slice.MigrationAbilitySlice;
- import ohos.aafwk.ability.Ability;
- import ohos.aafwk.ability.IAbilityContinuation;
- import ohos.aafwk.content.Intent;
- import ohos.aafwk.content.IntentParams;
- public class MigrationAbility extends Ability implements IAbilityContinuation {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setMainRoute(MigrationAbilitySlice.class.getName());
- }
- @Override
- public boolean onStartContinuation() {
- return true;
- }
- @Override
- public boolean onSaveData(IntentParams intentParams) {
- return true;
- }
- @Override
- public boolean onRestoreData(IntentParams intentParams) {
- return true;
- }
- @Override
- public void onCompleteContinuation(int i) {
- }
- @Override
- public void onRemoteTerminated() {
- }
- }
3、handleStartContinuation: Ability rejected. 流轉被拒絕
產(chǎn)生該錯誤的線上是不會產(chǎn)生crash,也不會生成error日志,而是打印的info日志。表現(xiàn)就是并沒有進行流轉。
產(chǎn)生的原因是實現(xiàn)IAbilityContinuation接口中的onStartContinuation方法返回的是false,修改辦法就是將返回值修改為true。
4、handleStartContinuation: ScheduleSaveData failed
產(chǎn)生該錯誤的線上是不會產(chǎn)生crash,也不會生成error日志,而是打印的warn日志。表現(xiàn)也是并沒有進行流轉。
產(chǎn)生的原因是實現(xiàn)IAbilityContinuation接口中的onSaveData方法返回的是false,修改辦法就是將返回值修改為true。
5、能正常流轉啟動FA,但是沒有傳遞過去數(shù)據(jù)
這里能正常流轉,也不會有相關報錯日志打印,只是業(yè)務邏輯錯誤。能正常流轉,但是沒有數(shù)據(jù)傳遞,產(chǎn)生的原因是實現(xiàn)IAbilityContinuation接口中的onRestoreData方法返回的是false,修改辦法就是將返回值修改為true。
最后代碼如下:
- package com.xdw.demo;
- import com.xdw.demo.slice.MigrationAbilitySlice;
- import ohos.aafwk.ability.Ability;
- import ohos.aafwk.ability.IAbilityContinuation;
- import ohos.aafwk.content.Intent;
- import ohos.aafwk.content.IntentParams;
- public class MigrationAbility extends Ability implements IAbilityContinuation {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setMainRoute(MigrationAbilitySlice.class.getName());
- }
- @Override
- public boolean onStartContinuation() {
- return true;
- }
- @Override
- public boolean onSaveData(IntentParams intentParams) {
- return true;
- }
- @Override
- public boolean onRestoreData(IntentParams intentParams) {
- return true;
- }
- @Override
- public void onCompleteContinuation(int i) {
- }
- }