鸿蒙,分布式任务调度,跨设备迁移FA

鸿蒙,分布式任务调度,远程启动FA 权限的获取和声明式一样的 这里省略了https://blog.csdn.net/weixin_44753443/article/details/114086026

//实现迁移的接口IAbilityContinuation,这个接口不管是迁移的实现Ability还是它对应的AbilitySlice 都要实现  注意所有的重新方法返回true 否则会没反应
public class MainAbilityextends Ability implements IAbilityContinuation  {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
    }

//发起迁移会调用
    @Override
    public boolean onStartContinuation() {
        return true;
    }
//onStartContinuation 为true后把发起页面数据存在intentParams 发送给目标页面
    @Override
    public boolean onSaveData(IntentParams intentParams) {
        return true;
    }
//目标页面成功接收到intentParams 在目标页面成功展示FA之后会调用这个方法
    @Override
    public boolean onRestoreData(IntentParams intentParams) {
        return true;
    }
//完成迁移之后迁移发起页面会调用这个方法
    @Override
    public void onCompleteContinuation(int i) {

    }
}

在Ability对应的slice页面也实现 IAbilityContinuation接口和抽象方法

public class KeepAccountsAbilitySlice extends AbilitySlice implements IAbilityContinuation {
//    非相关方法略过
private TextField mMoneyTextfield;//金额文本 页面上的组件 因为后面经常用到 所以声明在开始的位置

@Override
    public void onStart(Intent intent) {
    //    非相关略过,给声明的文本关联实际页面的组件
     mMoneyTextfield = (TextField) findComponentById(ResourceTable.Id_money_textfield);
}
 @Override
    public boolean onStartContinuation() {
        return true;
    }
//流转前保存数据
    @Override
    public boolean onSaveData(IntentParams intentParams) {
    //把要保存的数据放到intentParams里面 比如上面onStart声明的文本
    intentParams.setParam("money", mMoneyTextfield.getText());
        return true;
    }
//流转的页面显示数据
    @Override
    public boolean onRestoreData(IntentParams intentParams) {
     //这里内部嵌入了一个线程,要更新UI主线程中的组件上的值,要先拿到UI线程,然后投递任务Runnable过去
    
        getUITaskDispatcher().asyncDispatch(new Runnable() {
            @Override
            public void run() {
                //在任务Runnable中,向UI组件写值 把数据显示出来
                mMoneyTextfield.setText(intentParams.getParam("money").toString());
            }
        });
        return true;
    }

    @Override
    public void onCompleteContinuation(int i) {

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值