深入浅出 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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章