深入淺出 Android核心組件Service(5)
在遠程的Service調用中,Activity和Service到底是怎么溝通的?對于Service的遠程調用,一般會在不同的工程中也就是兩個不同的進程,那么進程的溝通機制是什么?傻蛋畫了一個圖來說明。

點擊查看大圖
Android進程在進行遠程通訊時會:
1.產生一個主線程。
2. 產生Looper對象
3.產生一個消息隊列。
4.產生一個虛擬機對象來實現Java和C++之間的溝通。
5.通過C/C++層的IPC來實現遠程通訊。
所謂的 進程間通訊:Android通過IBinder接口來實現進程間的通訊,MyActivity會調用IBinder的transact()函數通過IPC來調用遠程的onTransact()函數。注意: 在默認情況下,如果Service和Activity、 BroadcastReceiver在同一個工程里面,那么這些組件都會在同一個進程中執行,并且由主線程負責執行,當然也可以通過配置讓其在不同的組件里面執行,比如上一節我們就讓Service在Remote進程中運行。