分布式流转开发常见报错FAQ 原创

开源夏德旺
发布于 2021-2-25 16:25
浏览
3收藏

HarmonyOS开发中分布式协同是非常重要的一个功能,大家在刚接触的时候可能会出现各种各样的错误。我在此总结下在进行分布式流转开发过程中常见的一些坑和解决办法,希望可以帮助到各位。

1、查找不到设备列表的报错,如下图

分布式流转开发常见报错FAQ-鸿蒙开发者社区

解决措施如下:

(1)检查wifi是否在同一网络

(2)华为账号是否登录,设备是否都是登录的相同的华为账号

(3)手机设置中“分布式协同”是否开启。

 

2、This ability do not support continuation.

分布式流转开发常见报错FAQ-鸿蒙开发者社区该错误的原因是因为只在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。

分布式流转开发常见报错FAQ-鸿蒙开发者社区

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

产生的原因是实现IAbilityContinuation接口中的onSaveData方法返回的是false,修改办法就是将返回值修改为true。

分布式流转开发常见报错FAQ-鸿蒙开发者社区

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) {

    }
}

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
4
收藏 3
回复
举报
2条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

问题描述和解决方法都很详细,感谢分享

 

回复
2021-2-25 17:23:08
张荣超_九丘教育
张荣超_九丘教育

好文👍👍👍

回复
2021-2-25 19:26:02
回复