
想了解更多内容,鸿蒙请访问:
和华为官方合作共建的发中分布发常鸿蒙技术社区
https://harmonyos.51cto.com
HarmonyOS开发中分布式协同是非常重要的一个功能,大家在刚接触的式流时候可能会出现各种各样的错误。我在此总结下在进行分布式流转开发过程中常见的转开一些坑和解决办法,希望可以帮助到各位。见报
1、鸿蒙查找不到设备列表的发中分布发常报错,如下图

解决措施如下:
(1)检查wifi是式流否在同一网络
(2)华为账号是否登录,设备是转开否都是登录的相同的华为账号
(3)手机设置中“分布式协同”是否开启。
2、见报This ability do 鸿蒙not support continuation.

该错误的原因是因为只在Slice中实现了IAbilityContinuation接口,而没有在Slice对应的发中分布发常ability中也实现该接口,解决方案就是站群服务器式流在ability中实现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. 流转被拒绝
产生该错误的转开线上是不会产生crash,也不会生成error日志,见报而是打印的info日志。表现就是并没有进行流转。
产生的原因是实现IAbilityContinuation接口中的onStartContinuation方法返回的是false,修改办法就是将返回值修改为true。

4、handleStartContinuation: ScheduleSaveData failed
产生该错误的线上是不会产生crash,也不会生成error日志,而是打印的warn日志。表现也是并没有进行流转。
产生的亿华云原因是实现IAbilityContinuation接口中的onSaveData方法返回的是false,修改办法就是将返回值修改为true。

5、能正常流转启动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) { } } 想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com
