我看了人家分享的文档,没你想象的那么透明。
迁移能力:向开发者提供跨设备业务的无缝迁移能力,开发者可以通过调用 Page 模板 Ability 的迁移接口,将本地业务无缝迁移到指定设备中,打通设备间壁垒。
设备 A 的 FA 迁移至设备B:设备 A 上通过本地应用提供的迁移按钮,将设备 A 的业务无缝迁移到设备B中。通过业务迁移能力,打通设备 A 和设备 B 间的壁垒,实现如文档跨设备编辑、视频从客厅到房间跨设备接续播放等场景。
迁移FA
continueAbility(String deviceId)接口提供将本地FA迁移到指定设备上的能力,需要开发者在调用时指定目标设备的 deviceId。具体参数定义如下表所示:
说明
Ability 和 AbilitySlice 类均需要实现 IAbilityContinuation 及其方法,才可以实现 FA 迁移。
参数名 类型 说明
deviceId String 当开发者需要调用该接口将本地 FA 迁移时,需要指定目标设备的 deviceId。
FA 迁移过程中,远端 FA 首先接收到发起端 FA 传输的数据,再执行启动,即 onRestoreData() 发生在 onStart() 之前,详见 API 参考。
传输哪些数据是需要开发人员代码指定的。
……
// 为了实现迁移能力,需要引入传递迁移所需数据的包以及实现迁移能力的接口。
import ohos.aafwk.ability.IAbilityContinuation;
import ohos.aafwk.content.IntentParams;
……
// 设备 A 将运行时的 FA 迁移到设备 B,实现业务在设备间无缝迁移。
// 跨设备迁移FA
// 本地FA设置当前运行任务
private ClickedListener mContinueAbilityListener = new ClickedListener() {
@Override
public void onClick(Component arg0) {
// 用户选择设备后实现业务迁移
scheduleRemoteAbility(new ISelectResult() {
@Override
public void onSelectResult(String deviceId) {
continueAbility(deviceId);
}
});
}
};
@Override
public boolean onSaveData(IntentParams saveData) {
String exampleData = String.valueOf(System.currentTimeMillis());
saveData.setParam("continueParam", exampleData);
return true;
}
@Override
public boolean onRestoreData(IntentParams restoreData) {
// 远端FA迁移传来的状态数据,开发者可以按照特定的场景对这些数据进行处理
Object data = restoreData.getParam("continueParam");
return true;
}
@Override
public void onCompleteContinuation(int result) {
btnContinueRemoteFA.setText("ContinueAbility Done");
}
【 在 easyApple 的大作中提到: 】
: c/s结构也可以做到很多资源共享的事情,但扩展性稳定性都不行,表面上效果差不多,底层完全不一样,鸿蒙支持分布式文件系统,所有电脑文件看起来都在本地,mac,ios就不行,或者需要用户做很多工作,难以做到统一的访问接口
--
修改:laputa2013 FROM 220.249.52.*
FROM 220.249.52.*