Service的主要用途是提供后台服务调用,与Activity不同,service没有界面,也正因为如此,它不像Activity那样当用户离开应用界面就停止,Service则一直在后台运行,除非明确命令其停止。
Service也有生命周期的。当启动Service时,首先调用OnCreate()方法,然后调用onStart()方法。当Service停止时,会调用onDestroy()方法。
启动Service有两种方式,分别是调用startService()和bindService()。使用前者时,如何该Service还没启动,那么系统会先后调用该Service的onCreate()方法和onStart()方法,并且在使用完后该Service并不停止,除非使用stopService()明确停止。bindService()用于绑定一个Service,如何Service不存在,绑定就会失败;不过可以设置bindService()的参数,指定当Service不存时启动该Service,通过此方法启动的Service在使用完后,系统会自动停止该Service。
如果只是提供后台服务的话,那么不需要使用Service,使用线程Thread就可以了。Service的特点还在于进程间的服务调用,不仅在一个应用程序内部可以调用,还可以跨应用程序调用。调用Service服务的程序成为客户端Client。
如果Service与Client同在一个应用程序内,那么它们默认是在同一个进程、同一个线程内运行,因此,为了不使Client线程挂起,一般创建Service时都会重新建立一个Thread完成具体的工作,Service仅是提供一个调用的接口。而如果Client是在另一个程序中,那么Client和Service则运行在不同的进程中。
AIDL就是按照这个利用service的不用进程间来实现的。
转载自:http://www.2cto.com/kf/201111/111175.html
分享到:
相关推荐
Android Service讲解 和 aidl 实现
这是一个android的aidl例子,里面包含两个项目.LOL游戏和阿里的支付系统.aidl主要是解决跨应用交互问题.
android aidl service
Android AIDL使用例子
android 源程序
包含客户端和服务端两个例子,讲述AIDL的原理、规范以及使用方法
Android项目之AidlDemo(简单的aidl的例子)。AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition language的缩写。需要的小伙伴自请下载。
AIDL例子源码AIDL例子源码AIDL例子源码
如果自己的service可以在别package中被引用,需要在manifest文件中把此service的android:exported属性设置为true,否则会导致引用时异常Android: java.lang.SecurityException: Permission Denial
安卓Android源码——AidlDemo(简单aidl的例子).zip
Android多进程通讯AIDL传递Parcelable对象
在Android系统中有很多的Manager,wifi的管理类叫WifiManager,蓝牙的管理类叫...我在android源码中实现了一个自己写的AIDL例子,用以简单解释 文章地址:http://blog.csdn.net/kpioneer123/article/details/51219188
Android AidlDemo(简单aidl的例子).zip
Android下Aidl的使用,详细请参见博客:http://www.cnblogs.com/plokmju/p/android_Service_aidl_NormalType.html 和 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html
android aidl 本地和aidl通信,远端和aidl android aidl 本地和aidl通信,远端和aidl
Android service服务、aidl接口demo Android service服务、aidl接口demo
aidl例子,分客户端和服务端
Android 远程服务 RemoteService 通过AIDL方式实现跨应用接口访问
安卓Android源码——AidlDemo(简单aidl的例子).rar