POOPE 发表于 2021-7-2 20:41:07

HarmonyOS “跨设备迁移”原理解析

什么是HarmonyOS“跨设备迁移”?

  HarmonyOS“跨设备迁移”是指将承载业务的Page在同一用户的不同设备间迁移,以便支持用户业务无缝切换的诉求。“跨设备迁移”实现了业务跨设备流转功能,打破业务受限单设备的壁垒。
  典型应用场景举例:


  设备A完成邮件编写并选择附件,流转到另一设备


  “分布式任务调度”基于分布式软总线**、**分布式数据管理**、**分布式****Profile****和分布式安全认证这四项技术特性,构建统一的分布式服务管理(发现、同步、注册、调用)机制,支持对跨设备的应用进行远程启动、远程调用、远程连接以及迁移等操作。


  ●** **FA有UI界面,提供与用户交互的能力
  FA仅支持Page Ability,一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。


  ●** **onStart()
  当系统首次创建Page实例时触发。应用须重写该方法,并在此初始化配置为展示AbilitySlice。Page在此后进入INACTIVE状态,用户不可交互。
· onActive()  当Page从INACTIVE状态切换到前台时触发。Page在此之后进入ACTIVE状态,该状态下,应用与用户处于可交互的状态。
· onInactive()  当Page即将进入不可交互状态时会被触发,Page在此之后进入INACTIVE状态,应用与用户不可交互。
· onBackground()  当Page不再对用户可见时触发。Page在此之后进入BACKGROUND状态。
· onForeground()  当Page从BACKGROUND状态重新回到前台时触发。Page在此之后回到INACTIVE状态。
· onStop()  当系统将要销毁Page时触发。

迁移流程

  围绕Ability的生命周期,我们来看看业务“跨设备迁移”的具体流程。
  业务“跨设备迁移”的本质即通过分布式组网把一个设备的“Ability运行状态”迁移到另外一台设备上。
  程序中“跨设备迁移”通过调用Page Ability的迁移接口ContinueAbility,将设备A的业务无缝迁移到指定设备B中。其中,支持迁移的Page以及此Page所包含的所有AbilitySlice必须实现IAbilityContinuation接口。具体接口代码如下:
public interface IAbilityContinuation {
//是否可迁移
    boolean onStartContinuation();

//保存数据
    boolean onSaveData(IntentParams var1);

//恢复数据
    boolean onRestoreData(IntentParams var1);

//迁移完成
    void onCompleteContinuation(int var1);

    default void onRemoteTerminated() {
      throw new RuntimeException("Stub!");
    }
}  


“跨设备迁移”数据流转过程:
页: [1]
查看完整版本: HarmonyOS “跨设备迁移”原理解析