Android四大组件之Service简介

一、什么是Service

Service(服务)是能够在后台执行长时间运行操作并且不提供用户界面的应用程序组间,它也是Android应用四大组件之一。其它应用组件能够启动服务,并且即便用户切换到另一个应用程序,服务还可以在后台运行。
类似于Activity和其它应用组间,开发人员需要在应用程序配置文件中使用<service></service>标签声明全部的service,。

二、Service的作用

组件能够绑定到服务与之交互,甚至执行进程间通信(IPC)。例如,服务能够在后台处理网络事物、播放音乐、执行文件I/O或者与ContentProvider通信。

三、Service的分类

服务从本质上可分为两类。
1、Started(启动)
当应用程序组件(如Activity)通过startService()方法启动服务时,服务器处于started状态。一旦启动,服务能在后台无限期运行,即使启动它的组件已经销毁。通常,启动服务执行单个操作并不会向调用者返回结果。例如,它可能通过网络下载或者上传文件。如果操作完成,服务需要停止自身的运行。
2、Bound(绑定)
当应用程序组件通过bindService()方法绑定到服务时,服务处于bound状态。绑定服务提供客户端-服务器接口,允许组件与服务交互、发送请求、获得结果,甚至使用进程间通信(IPC)跨进程完成这些操作。仅当其它应用程序与之绑定时,绑定服务才运行。多个组件可以一次绑定到一个服务上,当它们都解除绑定时,服务被销毁。

四、Service的生命周期和重要方法

Service有自己的生命周期,它的生命周期方法比Activity少一些,只有onCreate()、onStartCommand()、onDestroy()。
以下介绍Service的生命周期方法和重要方法。
1、onStartCommand()方法
当其它组件(如Activity)调用startService()方法启动服务时,系统调用该方法。一旦该方法执行,服务就启动,并且在后台无限期运行。如果该开发人员实现该方法,则需要在任务完成时调用stopSelf()或stopService()方法停止服务。(如果仅项提供绑定,则不必实现该方法)
2、onCreate()方法
当服务第一次创建时,系统调用该方法执行一次初始化操作(在系统调用onStartCommand()或onBind()方法前)。如果该服务已经运行,则该方法不被调用。
3、onDestroy()方法
当服务不再使用并且即将销毁时 ,系统调用该方法。服务应该实现该方法来清理诸如线程、注册监听器、接收者等资源。这是服务的最后调用。
4、onBind()方法
当其它组件调用bindService()方法想与服务绑定时,系统调用该方法。在该方法实现中,开发人员必须通过返回IBinder提供客户端用来与服务通信的接口。该方法必须实现,但如果不想允许绑定服务,则返回Null。

五、使用Sercvice

Service一般由Activity启动,但也不依赖于Activity。它可由其它的Service或者Broadcast Receiver启动。
1、创建Service子类需要重写的方法
使用Service进行编程,首先要创建一个Service子类,并且重写相应方法即可。如果该服务不允许绑定,则重写onBind()方法返回Null,以及onCreate()进行初始化操作即可;如果该服务允许绑定,则重写onBind()方法返回IBinder提供客户端用来与服务通信的接口,以及onCreate()进行初始化操作。
2、启动和停止Service
一旦写好Service的子类和在配置文件声明该服务,就可以在其它组件启动该Service了。启动Service的过程与启动Activity是类似的,通过Intent对象进行,使用startService()方法或者bindService()方法启动Service。

停止一个Service,可以使用stopSelf()方法或者stopService()方法。


Service使用的demo下载地址:http://download.csdn.net/detail/qq_33721382/9906911


参考文献

1、明日科技 编著. Android从入门到精通:清华大学出版社,2012年9月第1版:384-385


猜你喜欢

转载自blog.csdn.net/qq_33721382/article/details/75674375