购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.5 实战:分布式任务调度启动远程FA

分别创建名为DistributedSchedulingStartRemoteFA和RemoteFA的Car设备类型应用,用于演示分布式任务调度时如何启动远程FA。

在“设备A启动设备B的FA”场景中,DistributedSchedulingStartRemoteFA作为设备A角色,而RemoteFA应用作为设备B角色。

6.5.1 修改RemoteFA应用

RemoteFA应用作为被调用方,修改内容比较简单。

1. 修改ability_main.xml

修改ability_main.xml文件,代码如下:

上述修改只是将显示文本内容改为了I am Remote FA,在预览器中预览效果,如图6-11所示。

图6-11 修改显示文本内容

2. 修改配置文件

修改配置文件,代码如下:

上述代码中的主要改动点如下。

(1)设置visible为true,这样就能被其他应用发现。

(2)reqPermissions声明多设备协同访问的权限ohos.permission.DISTRIBUTED_DATASYNC。

6.5.2 修改DistributedSchedulingStartRemoteFA应用

DistributedSchedulingStartRemoteFA应用作为调用方,修改内容相对来说比较多。

1. 修改ability_main.xml

修改ability_main.xml文件,代码如下:

上述修改只是将显示文本内容改为了Start Remote FA,在预览器中预览效果,如图6-12所示。

图6-12 修改显示文本内容

2. 修改配置文件

修改配置文件,代码如下:

上述主要改动点是新增了reqPermissions,声明多设备协同访问的权限、查询设备列表权限及查询设备信息的权限。

3. 修改MainAbilitySlice

修改MainAbilitySlice,代码如下:

上述代码中:

(1)实现了IAbilityContinuation接口。

(2)DeviceUtils.getDeviceId()方法主要用于返回设备Id。该方法内部调用DeviceManager的getDeviceList接口,通过FLAG_GET_ONLINE_DEVICE标记获得在线设备列表,并从中选择任意一个(这里是选第一个)作为返回设备Id。

(3)在onStart()方法中的Text上增加了单击事件,用于触发startRemoteFA()方法。

(4)执行startRemoteFA()方法。该方法中:

①指定待启动FA的bundleName和abilityName;

②这里需要判断deviceId是否为空字符。如果不是,则设置分布式标记,表明当前涉及分布式能力;如果是,则说明没有远程设备,就启动本地设备的FA。

③通过AbilitySlice包含的startAbility接口实现跨设备启动FA。

4. 新增DeviceUtils

DeviceUtils 类是查询设备列表的工具类,核心内容如下:

DeviceManager提供了查询设备列表的管理器,其中DeviceInfo主要分为以下三种。

(1)FLAG_GET_ALL_DEVICE:获取所有设备。

(2)FLAG_GET_OFFLINE_DEVICE:获取离线设备。

(3)FLAG_GET_ONLINE_DEVICE:获取在线设备。

5. 显式声明需要使用的权限

此外,对于三方应用还要求在实现Ability的代码中显式声明需要使用的权限,代码如下:

6.5.3 运行

本节先后在模拟器中安装RemoteFA应用和运行DistributedSchedulingStartRemoteFA应用。

此时,设备页面显示的是DistributedSchedulingStartRemoteFA应用的界面,提示是否使用多设备,如图6-13所示。

图6-13 提示是否使用多设备

单击“始终允许”按钮,切换到Start Remote FA界面,如图6-14所示。

图6-14 Start Remote FA界面

单击文本Start Remote FA,此时会触发事件,切换到I am Remote FA界面,如图6-15所示。

图6-15 I am Remote FA界面

上述操作验证了在设备A(DistributedSchedulingStartRemoteFA应用)中启动设备B(RemoteFA应用)的FA功能。 JFkA1pX7vCpeXXKQOEgwswip6E7Q+CEejsjmxWKlCjqDnQroLLVqNykKwosSH21d

点击中间区域
呼出菜单
上一章
目录
下一章
×