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


    鸿蒙入门指南,小白速来!0基础学习路线分享,高效学习方法,重点答疑解惑--->【课程入口】

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

    作者:软通夏德旺

    想了解更多内容,请访问51CTO和华为合作共建的鸿蒙社区:https://harmonyos.51cto.com

  • 相关阅读:
    OA开发中下载模板文件的方法之xml篇
    使用不同的doctype造成不同的显示效果
    反射发送实战(-)InvokeMember [转载]
    浅谈DataGridTableStyle心得
    动态加载控件疑惑。。。。
    不同语言中的关键字的比较
    利用mask在PhotoShop完成渐变的图片。
    碰撞代码
    接近感应传感器
    SQLite在多线程环境下的应用
  • 原文地址:https://www.cnblogs.com/HarmonyOS/p/14452801.html
Copyright © 2020-2023  润新知