一、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