Chinaunix

标题: 步入Service [打印本页]

作者: feiyang10086    时间: 2012-02-18 20:53
标题: 步入Service

步入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(应用程序未响应),同样主线程能够与用户畅通的进行交互;
作者: 第一夫人    时间: 2012-02-19 15:49
谢谢分享




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2