android Binder 学习
2016-04-24 19:07
344 查看
一、面向过程调用与面向对象调用的区别
1、面向过程调用同一时刻只能服务一个客户,而且该过程必须具有锁功能,如果有其他客户想要访问,则需要等待前一客户完成操作。
2、面向对象则能同时服务多个客户,类似把过程调用进行了多次复制供多个客户使用。
二、为什么需要Binder驱动
1、为了进行进程间通讯,传统的做法是socket、pipe(匿名管道)、fifo(命名管道)、semaphore(信号量)、消息队列等,但是它们的性能都很差,它们的主要原理是
A进程写数据到某公共区域C后,通知B数据写好了,然后B进入C取数据;这一流程存在两个步骤:1、A复制数据到C 2、C复制数据到B。并且C只能是内核空间,因为只有在内核空间,才能看得见A和B的内存区域。传统的IPC方式其实都是内核驱动。
2、binder是特制用于android进程间通讯的IPC方式。
1、具有面向对象远程调用的功能
2、为了提高数据传输效率,Binder为每个进程创建了一块缓存区,A进程通过Binder驱动直接将数据复制到B进程的缓存区,这样就比传统的IPC方式少了一步。
1、面向过程调用同一时刻只能服务一个客户,而且该过程必须具有锁功能,如果有其他客户想要访问,则需要等待前一客户完成操作。
2、面向对象则能同时服务多个客户,类似把过程调用进行了多次复制供多个客户使用。
二、为什么需要Binder驱动
1、为了进行进程间通讯,传统的做法是socket、pipe(匿名管道)、fifo(命名管道)、semaphore(信号量)、消息队列等,但是它们的性能都很差,它们的主要原理是
A进程写数据到某公共区域C后,通知B数据写好了,然后B进入C取数据;这一流程存在两个步骤:1、A复制数据到C 2、C复制数据到B。并且C只能是内核空间,因为只有在内核空间,才能看得见A和B的内存区域。传统的IPC方式其实都是内核驱动。
2、binder是特制用于android进程间通讯的IPC方式。
1、具有面向对象远程调用的功能
2、为了提高数据传输效率,Binder为每个进程创建了一块缓存区,A进程通过Binder驱动直接将数据复制到B进程的缓存区,这样就比传统的IPC方式少了一步。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories