一、IntentService:git
(1)、IntentService 会建立一个线程,来处理全部传给onStartCommand()的Intent请求。
(2)、对于startService()请求执行onHandleIntent()中的耗时任务,会生成一个队列,每次只有一个Intent传入onHandleIntent()方法并执行。也就是同一时间只会有一个耗时任务被执行,其余的请求还要在后面排队, onHandleIntent()方法不会多线程并发执行。
(3)、当全部startService()请求被执行完成后,IntentService 会自动销毁,因此不须要本身写stopSelf()或stopService()来销毁服务。
(4)、提供默认的onBind()实现 ,即返回null,不适合绑定的 Service。
(5)、提供默认的 onStartCommand() 实现,将intent传入等待队列中,而后到onHandleIntent()的实现。因此若是须要重写onStartCommand() 方法必定要调用父类的实现。github
IPC是Inter-Process Communication的缩写多线程
在Android系统的Binder机制中,由一系统组件组成,分别是Client、Server、Service Manager和Binder驱动程序,其中Client、Server和Service Manager运行在用户空间,Binder驱动程序运行内核空间。Binder就是一种把这四个组件粘合在一块儿的粘结剂了,其中,核心组件即是Binder驱动程序了,Service Manager提供了辅助管理的功能,Client和Server正是在Binder驱动和Service Manager提供的基础设施上,进行Client-Server之间的通讯。并发
Binder简介:ide
(1)Binder实现了IBinder接口。spa
(2)从IPC角度来讲,Binder是Android中的一种跨进程通讯方式。Binder还能够理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,这种通讯方式在Linux中没有。.net
(3)从Android Framework角度来讲,Binder是ServiceManager链接各类Manager(ActivityManager、WindowManager,等等)和相应ManagerService的桥梁。线程
(4)从Android应用层来讲,Binder是客户端和服务端进行通讯的媒介,当bindService的时候,服务端会返回一个包含了服务端业务调用的Binder对象,经过这个对象,客户端就能够获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务。对象
原文地址:http://blog.csdn.net/zizidemenghanxiao/article/details/50341773 blog
AIDL:http://www.sohu.com/a/160081562_635670
https://github.com/agxxxx/AIDLMusicPlayer