介绍鸿蒙的service

鸿蒙(HarmonyOS)中的 Service 是基于 Service 模板的 Ability。它主要用于在后台运行任务,例如执行音乐播放、文件下载等,不提供用户交互界面。 Service 具有以下特点: – 单实例:在一个设备上,相同的 Service 只会存在一个实例。如果多个 Ability 共用这个实例,只有当与 Service 绑定的所有 Ability 都退出后,Service 才能够退出。- 后台运行:可由其他应用或 Ability 启动,即便用户切换到其他应用,它仍将在后台继续运行。- 创建与注册:需要创建 Ability 的子类并实现相关生命周期方法,同时要在应用配置文件中进行注册,注册类型 type 需设置为 service。- 生命周期:根据调用方法的不同,可细分为普通服务和连接服务。普通服务类似一般后台服务;连接服务在其他 Ability 调用 connectAbility()时创建,客户端可通过调用 disconnectAbility()断开连接,当所有绑定取消后,系统会销毁该 Service。根据使用场景还可分为后台服务、前台服务和绑定服务。后台服务执行用户不会直接注意到的操作,可能在资源不足时被系统回收;前台服务执行一些用户能注意到的操作,会在系统状态栏显示正在运行的图标;绑定服务是客户端-服务器接口中的服务器,通常只在为其他应用组件提供服务时处于活动状态,不会无限期在后台运行。 其生命周期中的方法包括: –  onStart() :在创建 Service 时调用,用于 Service 的初始化,在其整个生命周期中只会调用一次,调用时传入的 Intent 应为空。-  onCommand() :在 Service 创建完成之后调用,客户端每次启动该 Service 时都会调用此方法,可用于做一些调用统计、初始化类的操作。-  onConnect() :在 Ability 和 Service 连接时调用,该方法返回 IRemoteObject 对象,开发者可以在回调函数中生成对应 Service 的 IPC 通信通道,以便 Ability 与 Service 交互。只有第一个客户端连接 Service 时,系统才会调用此方法来生成 IRemoteObject 对象,而后系统会将同一个 IRemoteObject 对象传递至其他连接同一个 Service 的所有客户端,而无需再次调用该方法。-  onDisconnect() :在 Ability 与绑定的 Service 断开连接时调用。-  onStop() :在 Service 销毁时调用,应通过实现此方法来清理任何资源,如关闭线程、注册的侦听器等。 启动 Service 可以使用 startAbility() 方法,它支持启动本地 Service 和远程 Service。停止 Service 则可在 Service 中通过 terminateAbility() 停止本 Service 或在其他 Ability 调用 stopAbility() 来停止 Service。 如果 Service 需要与 PageAbility 或其他应用的 ServiceAbility 进行交互,还需创建用于连接的 connection。Service 支持其他 Ability 通过 connectAbility() 方法与其进行连接,并在使用 connectAbility() 处理回调时,传入目标 Service 的 Intent 与 IAbilityConnection 的实例。 另外,在一些场景下(如播放音乐),为了让应用能够一直保持运行,需要使用前台 Service。开发者只需在 Service 创建的方法里,调用 keepBackgroundRunning() 将 Service 与通知绑定。调用该方法前需要在配置文件中声明 ohos.permission.KEEP_BACKGROUND_RUNNING 权限,同时还需要在配置文件中添加对应的 backgroundModes 参数。在 onStop() 方法中调用 cancelBackgroundRunning() 方法可停止前台 Service。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注