想了解更多内容,基于及P解请访问:
和华为官方合作共建的跨代码鸿蒙技术社区
https://harmonyos.51cto.com
是设备示例什么:是一种基于Ability框架下的Page Ability的能力
迁移动作主要步骤:
源侧设备上的Page请求迁移 源侧设备回调保存数据方法 目标侧设备启动Page,回调恢复数据方法请求迁移的迁移两种方法
continue Ability() continueAbilityReversibly()区别在于:continueAbility()不能进行回迁,continueAbilityReversibly()可以进行回迁
实现IAbilityContinuation接口
onStartContinuation() onSaveData() onRestoreData() onCompleteContinuation() onFailedContinuation() onRemoteTerminated()文字描述不够清晰和直接,功能工程故用表的完全形式进行输出
A作为源侧向目标侧B进行迁移其回调方法的顺序是:
本示例演示了同一Page Ability内和不同Page间的基于及P解AbilitySlice导航,以及Page Ability的跨代码跨端迁移。
因为示例代码的设备示例字真的小得让人眼瞎,所以就调大了一点
跨设备迁移
同PA不同Page间的迁移导航
同Page
Page内的AbilitySlice实例是以堆栈存放的,其页内导航的功能工程数据传递是通过intent传递的,源页面调用方法setParam(),亿华云计算完全其值是基于及P解键值对。在跳转页面通过getParam进行接收(intent.getParam(key:“XX”))
目标页面向源页面传递数据,跨代码构建intent实例(返回数据的设备示例载体)-赋值给intent类型的resultIntent变量-调用方法setParam()(键值对的形式)-调用方法setResult()指定实例作为参数-在原页面调用PresentForResult()(请求码非负整数作为第三个参数用于标识某一次页面导航)-重写方法onResult(处理返回数据)-
不同Page
显式:在触发事件中构造Intent.OperationBuilder的实例-分别链式调用 Operation operation=new Intent.OperationBuilder() withBundleName(getBundleName()) .getAbilityName(目标Ability.class.getName()) .build();为了把目标Page的包名和类名都封装在需要传递的Intent类型的实例navigation中,需要调用navigation的方法setOperation并指定才创建的Intent类型的实例operation为其参数。最后用startAbility且把navigation作为参数。
从目标页面跳转到源页面且处理数据,需要在目标调用getAbility.setParam并设置响应码(是用来标识一次响应)。之后在原页面把startAbility变更为startAbilityForResult(响应码)-把回调方法onResult替换为onAbilityResult(响应码),
跨设备迁移是基于分布式流转操作的。是很有趣和很值得研究的功能
同Page,不同Page,不同设备。三种情况下Page生命周期需要搞懂,需要分清楚Page生命周期回调方法,与跨设备迁移中实现IAbilityContinuation接口的回调方法。一定注意源侧与目标侧的方法调用的顺序。
对于基础的Ability与Slice的关系、香港云服务器Slice与Layout(xml)的关系、Intent的理解得到了提升。
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com