创建Service

介绍如何创建一个Service。

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

    • onStart()

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

    • 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) {        return super.onConnect(intent);    }
        @Override    public void onDisconnect(Intent intent) {        super.onDisconnect(intent);    }
        @Override    public void onStop() {        super.onStop();    }}
    
  2. 注册Service。

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

    {    "module": {        "abilities": [                     {                    "name": ".ServiceAbility",                "type": "service",                "visible": true                ...            }        ]        ...    }    ...}
    

results matching ""

    No results matching ""