华为Harmony鸿蒙开发笔记三:PageAbility跨设备迁移

技术文档 专栏收录该内容
35 篇文章 1 订阅

由于没有设备,模拟器又不支持启动多个,所以该功能没有实践,只贴代码,以后有机会再更新。

跨设备迁移,就是讲一个Ability(页面),从A设备,显示到B设备上的功能。

首先,讲需要迁移的Ability和它包含的Slice都实现IAbilityContinuation接口,并实现该接口的所有方法

package com.example.continuationdemo.slice;

import com.example.continuationdemo.MyApplication;
import com.example.continuationdemo.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.ability.IAbilityContinuation;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.IntentParams;
import ohos.aafwk.content.Operation;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class MainAbilitySlice extends AbilitySlice implements IAbilityContinuation {
    static final HiLogLabel label = new HiLogLabel(HiLog.LOG_APP, 0x00201, "MY_TAG");
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);

        Button btnStartAbility= (Button) findComponentById(ResourceTable.Id_btn_start_ability);
        if (btnStartAbility != null) {
            // 为按钮设置点击回调
            btnStartAbility.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    try {
                        continueAbility();
                        //请求迁移后,调用该页面的onStartContinuation()方法
                    } catch (IllegalStateException e) {
                        // Maybe another continuation in progress.
                    }
                }
            });
        }
    }


    @Override
    public boolean onStartContinuation() {
        //该方法在源设备执行
        //Page请求迁移后,系统首先回调此方法,开发者可以在此回调中决策当前是否可以执行迁移,比如,弹框让用户确认是否开始迁移。
        //返回true,表示可以迁移,执行onSaveData()方法
        return false;
    }

    @Override
    public boolean onSaveData(IntentParams intentParams) {
        //该方法在源设备执行
        //如果onStartContinuation()返回true,则系统回调此方法,开发者在此回调中保存必须传递到另外设备上以便恢复Page状态的数据。
        //返回true表示保存数据成功
        return false;
    }

    @Override
    public boolean onRestoreData(IntentParams intentParams) {
        //该方法在目标设备执行
        //源侧设备上Page完成保存数据后,系统在目标侧设备上回调此方法,开发者在此回调中接受用于恢复Page状态的数据。
        // 注意,在目标侧设备上的Page会重新启动其生命周期,无论其启动模式如何配置。且系统回调此方法的时机在onStart()之前。
        return false;
    }

    @Override
    public void onCompleteContinuation(int i) {
        //该方法在源设备执行
          //目标设备上执行完onRestoreData方法以后,回调该方法,通知迁移成功
    }
}

 

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

<p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;"> </p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;"><br /><strong>课程目标:</strong></p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;">你将获得鸿蒙手机应用开发入门的知识点和技术点的细节,能够基于鸿蒙系统开发分布式APP应用;</p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;"><br /><strong>课程简介:</strong></p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;">鸿蒙OS借助分布式能力造就新硬件、新交互、新服务,打开焕然一新的全场景世界,将必然成为下一个时代——万物互联时代的王者,虽然物联网的概念兴起多年,但是智能设备的割裂,让万物互联始终停留在一个概念上,鸿蒙OS将是把这个概念变成事实的强大操作系统。<br /> </p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;">这门课程是鸿蒙OS系列课的第一门入门课,详细!详细!再详细!尽可能详细地把鸿蒙OS的应用开发入门知识和技术点讲清楚,讲明白!尤其针对在校IT专业的学生门,能让你们听懂,听明白,会做!</p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;"> </p> <p style="margin: 0px; max-width: 100%; box-sizing: border-box; color: #333333; font-family: 'Hiragino Sans GB', 'Microsoft Yahei', arial, 宋体, 'Helvetica Neue', Helvetica, STHeiTi, sans-serif; font-size: 14px; background-color: #ffffff;"><img src="https://img-bss.csdnimg.cn/202101010850123342.jpg" alt="" width="327" height="436" /></p>
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

87年的90后

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值