android进程间通讯演示文稿

android进程间通讯演示文稿

ID:19574230

大小:487.00 KB

页数:23页

时间:2018-10-03

android进程间通讯演示文稿_第1页
android进程间通讯演示文稿_第2页
android进程间通讯演示文稿_第3页
android进程间通讯演示文稿_第4页
android进程间通讯演示文稿_第5页
资源描述:

《android进程间通讯演示文稿》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Android进程间通讯目录Binder框架Binder介绍Android跨进程通讯ActivityContentProviderBroadcastAIDLBinder框架(一)Binder框架(二)Binder应用层类继承关系Android系统通信方式BinderBinder通信的实现:1.Binder通信是通过linux的binderdriver来实现的,2.Binder通信操作类似线程迁移(threadmigration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代码然后带着执行的结果返

2、回;3.Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。BinderAndroid中的Binder通信实现要点:1.Android中的Binder通信是基于Service与Client的工作模型的;2.所有需要IBinder通信的进程都必须创建一个IBinder接口;3.系统中有一个进程管理所有的systemservice:4.Android不允许用户添加非授权的Systemservice;5.现在源码开放了,我们可

3、以修改一些代码来实现添加底层systemService的目的;6.对用户程序来说,我们也要创建server,或者Service用于进程间通信;7.ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect;8.所有的Activity也是通过这个service来启动,加载的;9.ActivityManagerService也是加载在SystemsServcie中的;BinderAndroid的Service工作流程1.Android虚拟

4、机启动之前系统会先启动serviceManager进程;2.serviceManager打开binder驱动,并通知binderkernel驱动程序这个进程将作为SystemServiceManager;3.然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个Systemservice后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用addService函数将Systemservice添加到ServiceManager

5、进程中;5.然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binderkernel的一个参考,6.所以serviceIBinder在binderkernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binderkernel访问service对象中的方法。7.Client与Service在不同的进程中,通过这种

6、方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。binder进程有自己的地址空间,不同进程间的通信并不能直接引用地址。一般的解决途径是,发送进程把需要传送的数据按照一定格式(marshall)转换成二进制形式/特定格式的数据,发往接收进程;接收进程收到二进制形式、特定格式的数据后,反转换(unmarshall)成原文数据,然后使用。binder使用的就是这种步骤。binder使用的是同步c/s模型,s循环阻塞

7、在接收数据操作上,随时处理c的数据,处理后发送回c;c则将请求服务的数据发送到s,阻塞在收取s返回数据,收到数据后,继续自己的工作。binder的框架可以分成3层   最下层是linuxos和binderdriver。binderdriver本质上是进程间的共享内存,各进程将要发送到其它进程的数据写入到driver,从driver读取其它进程发送来的数据。   中间层是cpp实现的framework,完成数据的接收发送转换,和c/s流程的支持。  其实到中间层,binder的架构就已经完全具备了。但andr

8、oid使用的是java做为一般app的开发语言。所以还需要jni和相应javabinder类的支持,这就是中间层上面的第三层:jni/javabinderdriverbinderdriver是binder机制的基础,是实现ipc的通道。binderdriver与framework和app的功能操作是用ioctl方式实现的。最基本的操作是数据读写操作。一次读写操作有两个子操作组成:写子操作和读子操作。driver为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。