今天咱们来聊一下Service Ability,基于Service模板的Ability(如下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其余应用或Ability启动,即便用户切换到其余应用,Service仍将在后台继续运行。程序员
这里就不得不提到另一个知识点,线程。json
其实目前咱们前面提到的一些UI布局的绘制都是在主线程上进行的,又称UI线程,默认状况下,全部的操做都是在主线程上执行,这里若是咱们系统经过ServiceAbility来完成后台运行任务,咱们首先要初步了解一下asyncDispatch。异步
(1)初识TaskDispatcher的异步派发任务asyncDispatch;async
那么TaskDispatcher又是什么呢?TaskDispatcher是一个任务分发器,它是Ability分发任务的基本接口,隐藏任务所在线程的实现细节。详细的介绍咱们放到后面,先来了解异步派发任务asyncDispatch:派发任务,并当即返回,返回值是一个可用于取消任务的接口。工具
(2)建立Service Ability;布局
经过工具栏File->New->Ability->Empty Service Ability来建立Service Ability,这样建立的好处是能够在config.json中自动完成Service Ability的配置。spa
(3)启动Service Ability;线程
这里还能够经过Intent的构造元素Parameters来传递参数,进行简单的数据传递。3d
(4)链接ServiceAbilityblog
若是Service须要与Page Ability或其余应用的Service Ability进行交互,则应建立用于链接的Connection。Service支持其余Ability经过connectAbility()方法与其进行链接。在使用connectAbility()处理回调时,须要传入目标Service的Intent与IAbilityConnection的实例。IAbilityConnection提供了两个方法供开发者实现:onAbilityConnectDone()用来处理链接的回调,onAbilityDisconnectDone()用来处理断开链接的回调。
链接时步骤(1)(2)保持不变,connectAbility中传入intentService和connection。
这里详细的建立IDL文件过程可参考《IDL接口使用规范》和《定义HarmonyOS IDL接口》。这个在后续的文章中分析讨论,目前官方的接口还没法成功回调onAbilityConnectDone()。
(5)最后附上其生命周期的说明。
本文由GZH程序员小小叶发布!