如果 service 需要与 page ability 或其他应用的 service ability 进行交互,则应创建用于连接的 connection。service 支持其他 ability 通过 connectability()方法与其进行连接。
在使用 connectability() 处理回调时,需要传入目标 service 的 intent 与 iabilityconnection 的实例。iabilityconnection 提供了两个方法供开发者实现: onabilityconnectdone() 用来处理连接的回调,onabilitydisconnectdone() 用来处理断开连接的回调。
连接 service 的代码示例如下:
// 创建连接回调实例private iabilityconnection connection = new iabilityconnection() { // 连接到service的回调 @override public void onabilityconnectdone(elementname elementname, iremoteobject iremoteobject, int resultcode) { // 在这里开发者可以拿到服务端传过来iremoteobject对象,从中解析出服务端传过来的信息 } // 断开与连接的回调 @override public void onabilitydisconnectdone(elementname elementname, int resultcode) { }};// 连接serviceconnectability(intent, connection);
同时,service 侧也需要在 onconnect() 时返回 iremoteobject,从而定义与 service 进行通信的接口。onconnect() 需要返回一个 iremoteobject 对象,harmonyos 提供了 iremoteobject 的默认实现,用户可以通过继承 remoteobject 来创建自定义的实现类。service 侧把自身的实例返回给调用侧的代码示例如下:
// 创建自定义iremoteobject实现类private class myremoteobject extends remoteobject { public myremoteobject() { super("myremoteobject"); }} // 把iremoteobject返回给客户端@overrideprotected iremoteobject onconnect(intent intent) { return new myremoteobject();}
21、鸿蒙os 连接service,鸿蒙os 生命周期-百家乐凯发k8
与 page 类似,service 也拥有生命周期,如图1所示。根据调用方法的不同,其生命周期有以下两种路径:
启动 service
该 service 在其他 ability 调用 startability() 时创建,然后保持运行。其他 ability 通过调用 stopability() 来停止 service,service 停止后,系统会将其销毁。
连接 service
该 service 在其他 ability 调用 connectability() 时创建,客户端可通过调用 disconnectability() 断开连接。多个客户端可以绑定到相同 service,而且当所有绑定全部取消后,系统即会销毁该 service。
图1 service 生命周期