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

5.8 实战:Service Ability生命周期示例

为了更好地理解Service Ability的生命周期,本节将用一个示例来演示。采用Car设备类型,创建一个名为ServiceAbilityLifeCycle的应用。

5.8.1 创建Service

在DevEco Studio中,可以通过图5-16所示方式创建一个Empty Service Ability。

图5-16 创建一个Empty Service Ability

根据图5-17所示引导,创建一个名为TimeServiceAbility的Service。

图5-17 创建一个名为TimeServiceAbility的Service

注意:上述步骤中的Enable backgroud mode(后台模式)先不要启用。

在自动创建的TimeServiceAbility的基础上,修改代码如下:

其中,timeRemoteObject是一个IRemoteObject子类的实例,可以通过timeRemoteObject将当前时间返回给调用侧。

同时,在配置文件中会自动新增TimeServiceAbility相关的配置信息,代码如下:

5.8.2 创建远程对象

timeRemoteObject是TimeRemoteObject类的实例。TimeRemoteObject类是远程对象,继承自LocalRemoteObject,代码如下:

同时,Service 侧也需要在 onConnect() 方法中返回 IRemoteObject对象。

5.8.3 修改MainAbilitySlice

修改MainAbilitySlice,代码如下:

上述代码中,在onStart()方法中增加了对Text的事件监听。当单击textStart按钮时,会启动本地服务、连接本地服务;当单击textEnd按钮时,会断开本地服务、关闭本地服务。

5.8.4 修改ability_main.xml

修改ability_main.xml,代码如下:

上述代码主要定义了两个Text,一个用于触发Start单击事件,另一个用于触发End单击事件。

5.8.5 运行

在Car模拟器中运行该应用,如图5-18所示。

图5-18 在Car模拟器中运行应用

此时,能看到控制台输出如下内容:

从上述日志可以看出,MainAbilitySlice已经启动。

单击文本Start,触发单击事件,此时能看到控制台输出如下内容:

当单击文本Start时,会启动本地服务、连接本地服务。而TimeServiceAbility也分别执行on-Start、onCommand以及onConnect等生命周期,并将当前时间返回给MainAbilitySlice。

单击文本End,触发单击事件,此时能看到控制台输出如下内容:

当单击文本End 时,会断开本地服务、关闭本地服务。而TimeServiceAbility也分别执行onDisconnect、onBackground以及onStop等生命周期。 +BLqa/nijOB08MnVC8mM7B3XjxWeYrAsUEh4H0bGcDIIRJN7iGxhb3K41F7zyQJI

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