步入Service

一个Service是在后台运行并执行一些费时的操作的业务组件,它对用户而言是不可见的。它总是在背后默默的支持整个系统的运作而提供相关的功能。一个被启动的Service在程序退出时,该Service有可能仍保持运行的状态。 Service允许各进程之间进行通信(IPC)。

使用Service的用户可以采用两种形式来安排Service完成相应的任务。

 

  1. 使用Context.startService方法启动一个Service.一个被启动的Service即使它的启动者被销毁后,该服务对象可能仍然在后台运行。采用该种方式使用服务组件适用于执行单任务且无需返回任何结果。一个被启动的Service必须在完成任务之后自行销毁(Context.stopService(..)),或者自行销毁(this.stopSelf()).
  2. 采用Context.bindService方法绑定一个Service.一个被绑定的Service通常提供给客户端一组相应的接口,如:发送消息,获取结果、以及在进程之间进行通信。多个组建能够同时绑定同一个Service组件,一个被绑定的Service一旦被所有其他应用程序组件取消绑定(Context.unbindService(..)),该Service的生命周期也随之结束。
Service组件能够同时提供给客户端这两种方式.一个启动的Service组件需要重写 onStartCommand方法来完成相应的功能,而一个被绑定的Service则需要重写 onBind方法。
Service在执行阶段并没有开辟一根新的线程,它仍然运行于主线程内,也就是说当一个Service需要连接网络或者做一些费时的操作时,就需要为它开辟一根新的线程来避免 ANP(应用程序未响应),才能让主线程能够与用户畅通的进行交互;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值