HarmonyOS Sample 之 PageAbility页面导航及迁移 原创 精华
目录
PageAbility页面导航及迁移
介绍
本示例实现了以下几个功能:
1.同一Page Ability内不同Slice导航
2.不同Page间的AbilitySlice导航
3.Page Ability的跨端迁移
搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
代码结构解读
后台逻辑
页面布局
页面布局
布局比较简单,我就贴个运行的效果图大家就清楚了
后台逻辑
1.同一Page Ability内不同Slice导航
有两种情况,
第一,需要返回数据就使用presentForResult方法,
目标Slice把数据存到Intent中,当执行terminate()方法时,就会执行回调onResult方法
第二,不需要返回数据就用present方法就可以了
2.不同Page间的AbilitySlice导航,需要借助Operation的设置
也分两种,
第一,导航到目标Ability的默认Slice,不需要指定Operation的Action,或者设置为空
第二,导航到目标Ability的非默认页,指定Action,需要借助路由实现
路由不是随便写的,需要在config.json注册 ,同时,在对应的SecondAbility中设置
3.Page Ability的跨端迁移
1.config.json 声明多设备协同权限
2.ContinuationAbility 请求用户授权
3.ContinuationAbility 处理用户接受/拒绝 授权后的回调函数
需要implements IAbilityContinuation接口,重写onRequestPermissionsFromUserResult方法
4.ContinuationAbility 处理其它协同函数
5.ContinuationAbilitySlice 迁移数据处理
同样需要implements IAbilityContinuation接口,重新相关方法。
从终端A 迁移到 终端B 的整个过程:
A端:
在onStart方法中初始化迁移监听事件,监听事件里调用continueAbility()方法启动迁移,
开始迁移时,回调onStartContinuation方法确认是否迁移,然后回调在onSaveData方法保存迁移数据,返回是否成功,
成功后,向对端发起迁移请求。
B端:
执行回调函数onRestoreData 恢复数据,返回是否成功,通知A端迁移成功
A端:
执行回调函数onCompleteContinuation 迁移完成,关闭当前Slice
归纳总结
1.迁移过程数据的存储和恢复
2.迁移数据的回显
迁移后往往需要把A端的数据在B端的页面回显,不要在onRestoreData回调中设置,而是把数据赋值给全局变量,然后在onStart方法中进行设置。
效果展示
完整代码
附件直接下载
很详细的解读,谢谢分享。
很详细的解读,谢谢分享。
解读的很详细,适合新手开发的理解~ 感谢分享