深入淺出 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進程中運行。

發佈了30 篇原創文章 · 獲贊 34 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章