HarmonyOS 开发中分布式协同是非常重要的一个功能,大家在刚接触的时候可能会出现各种各样的错误。

我在此总结下在进行分布式流转开发过程中常见的一些坑和解决办法,希望可以帮助到各位。
①查找不到设备列表的报错。

解决措施如下:
检查 wifi 是否在同一网络
华为账号是否登录,设备是否都是登录的相同的华为账号
手机设置中“分布式协同”是否开启
②This ability do not support continuation.

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() {
}
}
③handleStartContinuation: Ability rejected. 流转被拒绝
产生该错误的线上是不会产生 crash,也不会生成 error 日志,而是打印的 info 日志。表现就是并没有进行流转。

④handleStartContinuation: ScheduleSaveData failed
产生该错误的线上是不会产生 crash,也不会生成 error 日志,而是打印的 warn 日志。表现也是并没有进行流转。

⑤能正常流转启动 FA,但是没有传递过去数据
这里能正常流转,也不会有相关报错日志打印,只是业务逻辑错误。
能正常流转,但是没有数据传递,产生的原因是实现 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) {
}
}
👇扫码关注鸿蒙技术社区👇
专注开源技术,共建鸿蒙生态

点“阅读原文”了解更多
文章转载自鸿蒙技术社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






