.Linux系统进程间通信有哪些方式?
1.socket

2.name pipe
命名管道;
3.message queue
消息队列;
4.singal
信号量;
5.share memory
共享内存;
.Java系统的通信方式是什么?
1.socket;
2.name pipe;
.Android系统通信方式是什么?
Binder
通信;
.Binder通信的优势是什么?
高效率
.Binder通信的特点是什么?
是同步,而不是异步;
.Binder通信是如何实现的?
1.Binder
通信是通过linuxbinder driver来实现的,
2.Binder
通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回;
3.Binder
的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。
. Android中的Binder通信实现要点:

1. Android中的Binder通信是基于ServiceClient的工作模型的;
2.
所有需要IBinder通信的进程都必须创建一个IBinder接口;
3.
系统中有一个进程管理所有的system service
4. Android
不允许用户添加非授权的System service
5.
现在源码开放了,我们可以修改一些代码来实现添加底层system Service的目的;
6.
对用户程序来说,我们也要创建server,或者Service用于进程间通信;
7. ActivityManagerService
管理JAVA应用层所有的service创建与连接(connect),disconnect
8.
所有的Activity也是通过这个service来启动,加载的;
9. ActivityManagerService
也是加载在Systems Servcie中的;
.AndroidService工作流程
1.Android
虚拟机启动之前系统会先启动service Manager进程;2.service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager
3.
然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将System service添加到Service Manager进程中;
5.
然后client可以通过getService获取到需要连接的目的ServiceIBinder对象,这个IBinderServiceBBinderbinder kernel的一个参考,
6.
所以service IBinderbinder kernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binder kernel访问service对象中的方法。
7.Client
Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。

更多相关文章

  1. Binder
  2. android:allowTaskReparenting(clearTaskOnLaunch...)
  3. 杂乱之android的Spinner应用
  4. Unable to recreate missing debug keystore解决办法
  5. android用户界面-组件Widget-选项卡Tab
  6. 金山手机毒霸工作原理
  7. android 任务和返回堆栈(Tasks and Back Stack)
  8. 2011 APP年终总结——日均160元的收入经历
  9. Android(安卓)面试题集 包含答案

随机推荐

  1. [置顶] Android源码分享
  2. 基于zxing-lib三步实现Android二维码应用
  3. Intent总结
  4. Spinner下拉列表装填数据的两种方法
  5. Android控件笔记——使用TextView实现跑
  6. Android(安卓)通过 Intent 传递类对象
  7. 【Android(安卓)Developers Training】 7
  8. Android(安卓)res文件夹下资源定义及使用
  9. JAVA的整型与字符串相互转换 android
  10. android 程序完全退出的有效方法