欢迎来到天天文库
浏览记录
ID:15168073
大小:32.00 KB
页数:6页
时间:2018-08-01
《androidipc进程间通讯机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AndroidIPC进程间通讯机制AndroidIPC进程间通讯机制分类:Android一.Linux系统进程间通信有哪些方式,1.socket;2.namepipe命名管道;3.messagequeue消息队列;4.singal信号量;5.sharememory共享内存;二.Java系统的通信方式是什么,1.socket;2.namepipe;三.Android系统通信方式是什么,Binder通信;四.Binder通信的优势是什么,高效率五.Binder通信的特点是什么,是同步,而不是异步;六.Binder通信是如何实现的,1.Binder通信是通过linu
2、x的binderdriver来实现的,2.Binder通信操作类似线程迁移(threadmigration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返回;3.Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。七.Android中的Binder通信实现要点:1.Android中的Binder通信是基于Service与Client的工作模型的;2.所有需要IBinder通信的进程都必须创建一个IBinder接口;3.系统中有一个进程管理所
3、有的systemservice:4.Android不允许用户添加非授权的Systemservice;5.现在源码开放了,我们可以修改一些代码来实现添加底层systemService的目的;6.对用户程序来说,我们也要创建server,或者Service用于进程间通信;7.ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect;8.所有的Activity也是通过这个service来启动,加载的;9.ActivityManagerService也是加载在SystemsServcie中的;
4、八.Android的Service工作流程1.Android虚拟机启动之前系统会先启动serviceManager进程;2.serviceManager打开binder驱动,并通知binderkernel驱动程序这个进程将作为SystemServiceManager;3.然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个Systemservice后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将Systemservice添加到ServiceMa
5、nager进程中;5.然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binderkernel的一个参考,6.所以serviceIBinder在binderkernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binderkernel访问service对象中的方法。7.Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户
6、程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。Email:zcatt@163.comBlog内容提要文档简要整理binder,parcel,和service的内容。以供备忘和参考。声明仅限学习交流,禁止商业用途。转载需注明出处。版本记录DateVerNote2011-02-210.1Draft.zcatt,Beijing1.binder的结构binder是解决ipc和rpc的工具。android使用的是linuxos,支持多进程和多线程。同时,对于javaapp,一个vm占用一个进程。做为完善的开发框架
7、,android必须支持ipc。binder就是解决ipc问题的途径,更进一步,binde还支持rpc。进程有自己的地址空间,不同进程间的通信并不能直接引用地址。一般的解决途径是,发送进程把需要传送的数据按照一定格式(marshall)转换成二进制形式/特定格式的数据,发往接收进程;接收进程收到二进制形式、特定格式的数据后,反转换(unmarshall)成原文数据,然后使用。binder使用的就是这种步骤。binder使用的是同步c/s模型,s循环阻塞在接收数据操作上,随时处理c的数据,处理后发送回c;c则将请求服务的数据发送到s,阻塞在收取s返回数据,收到数
8、据后,继续自己的工作。binder的框
此文档下载收益归作者所有