codecamp

鸿蒙OS 创建Service

介绍如何创建一个Service。

  1. 创建 Ability 的子类,实现 Service 相关的生命周期方法。Service 也是一种 Ability,Ability 为 Service 提供了以下生命周期方法,用户可以重写这些方法来添加自己的处理。

  • onStart()

该方法在创建 Service 的时候调用,用于 Service 的初始化,在 Service 的整个生命周期只会调用一次。

  • onCommand()

在 Service 创建完成之后调用,该方法在客户端每次启动该 Service 时都会调用,用户可以在该方法中做一些调用统计、初始化类的操作。

  • onConnect()

在 Ability 和 Service 连接时调用,该方法返回 IRemoteObject 对象,用户可以在该回调函数中生成对应 Service 的 IPC 通信通道,以便 Ability 与 Service 交互。Ability 可以多次连接同一个 Service,系统会缓存该 Service 的 IPC 通信对象,只有第一个客户端连接 Service 时,系统才会调用 Service 的 onConnect 方法来生成 IRemoteObject 对象,而后系统会将同一个 RemoteObject 对象传递至其他连接同一个 Service 的所有客户端,而无需再次调用 onConnect 方法。

  • onDisconnect()

在 Ability 与绑定的 Service 断开连接时调用。

  • onStop()

在 Service 销毁时调用。Service 应通过实现此方法来清理任何资源,如关闭线程、注册的侦听器等。

创建 Service 的代码示例如下:

   public class ServiceAbility extends Ability {
       @Override
       public void onStart(Intent intent) {
           super.onStart(intent);
       }

    
       @Override
       public void onCommand(Intent intent, boolean restart, int startId) {
           super.onCommand(intent, restart, startId);
       }

    
       @Override
       public IRemoteObject onConnect(Intent intent) {
           super.onConnect(intent);
           return null;
       }

    
       @Override
       public void onDisconnect(Intent intent) {
           super.onDisconnect(intent);
       }

    
       @Override
       public void onStop() {
           super.onStop();
       }
   }

  1. 注册 Service。

Service 也需要在应用配置文件中进行注册,注册类型 type 需要设置为 service。

   {
       "module": {
           "abilities": [         
               {    
                   "name": ".ServiceAbility",
                   "type": "service",
                   "visible": true
                   ...
               }
           ]
           ...
       }
       ...
   }xxxxxxxxxx {    "module": {        "abilities": [                     {                    "name": ".ServiceAbility",                "type": "service",                "visible": true                ...            }        ]        ...    }    ...}{    "module": {        "abilities": [                     {                    "name": ".ServiceAbility",                "type": "service",                "visible": true                ...            }        ]        ...    }    ...}
鸿蒙OS Service模板的Ability基本概念
鸿蒙OS 启动Service
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

鸿蒙OS 开发

鸿蒙OS 术语

鸿蒙OS Java API参考

鸿蒙OS ohos.aafwk.ability

鸿蒙OS ohos.aafwk.abilityjet.activedata

鸿蒙OS ohos.aafwk.content

鸿蒙OS java.lang

鸿蒙OS java.Util

鸿蒙OS java.Util class

鸿蒙OS ohos.data.dataability

鸿蒙OS ohos.data.dataability class

鸿蒙OS ohos.agp.components

鸿蒙OS ohos.agp.components interface

鸿蒙OS ohos.agp.components class

鸿蒙OS ohos.global.configuration

鸿蒙OS java.io

鸿蒙OS ohos.data.resultset

鸿蒙OS ohos.data.resultset interface

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }