文档章节

Androd的IPC通信(二)

k
 kim366
发布于 2016/05/13 19:15
字数 368
阅读 11
收藏 0
点赞 2
评论 0

IPC的IBinder接口--定义与实现

    1.  Android架构的沟通依赖单一的IBinder接口,此时,IPC的Client端调用IBinder的transact()函数,透过IPC机制而调用到远程(remote)的onTransact()函数。

    2.  IBinder定义了一些函数,可以让Client跨进程地调用,最主要的是transact()函数。

    3.  IBinder接口的实现。基于这个IBinder的定义档,我们可以开发类来实现它,并在其他的APP中进行使用,实现进程间的调用。在Android框架中,也基于这个接口类实现了Binder和ProxyBinder基类来实现进程间通信。


Java层的Binder基类定义

     基类Binder的很重要的目的是支持跨进程调用Service, 既允许远程的Client跨进程调用某个Service。


Java层的BinderProxy基类的定义

    当我们看到xxxxProxy的定义时,就应该想到,它是摆在Client端进程里,作为Service端的分身。

    由于跨进程沟通是时,不是从Java层直接调用的,而是通过底层的Binder Driver驱动来沟通的,所以Client端必须通过Proxy的IBinder接口,转而调用JNI本地模块来衔接到底层BinderDriver的驱动服务,进而调用到在另一个进程中运行的Service。

    当Client透过IBinder接口而调用到BinderProxy的transact()函数时,就调用到JNI本地的transact()函数,进而衔接到底层BinderDriver驱动服务。




本文转载自:http://blog.csdn.net/oyangyujun/article/details/47812999

共有 人打赏支持
k
粉丝 1
博文 129
码字总数 0
作品 0
朝阳
Android 使用Messenger跨进程通信框架

一.通过Binder绑定形式的通信 上一篇说道Binder机制的通信框架,也说过Messenger的底层实现自AIDL,因此对于跨进程通信中,Messenger是一种比较高级的框架,可以说对于一个app开发者来说重要性...

IamOkay ⋅ 2014/12/04 ⋅ 0

Linux环境进程间通信(二)--信号

Linux环境进程间通信(二): 信号(上) www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html Linux环境进程间通信(二): 信号(下) www.ibm.com/developerworks/cn/linux/l-ip...

长平狐 ⋅ 2012/09/03 ⋅ 0

Binder学习(二)Binder机制解析

概述 由于Android是基于Linux内核的操作系统,所以在了解Binder级之前需要先了解一些关于Linux的知识,进程隔离以及虚拟地址: 进程隔离 进程隔离是为保护操作系统中进程互不干扰而设计的一组...

wustor ⋅ 2017/11/25 ⋅ 0

Android Binder面试详解

一、Linux内核的基础知识 1、进程隔离/虚拟地址空间 2、系统调用 3、Linux跨进程通信机制 目前linux支持的IPC包括传统的管道、System V IPC、即消息队列/共享内存/信号量,以及socket中只有s...

千涯秋瑟 ⋅ 2017/12/03 ⋅ 0

UNIX环境高级编程 第十五章:进程间通信:是指在不同进程之间传播或交换信息

IPC的方式通常有管道(包括无名管道和命名管道(FIFO))、消息队列、信号量、、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 1.管道,通常指无名管道,是...

qiangzhenyi1207 ⋅ 01/16 ⋅ 0

Webservice 是通过什么协议实现的进程之间通信是怎么搞的

一、Webservice 是通过什么协议实现的以及进程之间通信的协议是什么 WebService到底是什么? http://blog.csdn.net/wooshn/article/details/8069087 二、进程之间通信的方式 为什么要进行进程...

Oscarfff ⋅ 2015/05/06 ⋅ 0

linux系统编程(4)

一 IPC 对象 ---- 消息队列 IPC 对象命令 (1)查看系统中IPC对象 ipcs -a 显示所有的IPC对象 ipcs -s/-q/-m (2)删除系统中的IPC对象 ipcrm -q/-s/-m ID 1.获得key值 第一种: keyt ftok(const...

baiweibi ⋅ 2017/12/24 ⋅ 0

linux/unix下多进程间的通信

进程:进程是计算机运行的基本单位,利用多进程可以实现系统的多任务;但是,在多进程的任务中,进程之间的通信是比较麻烦的,因为,进程之间使用的是不同的进程空间,所以,编写多进程的系统...

陈小花与胡汉三 ⋅ 2013/12/07 ⋅ 0

System V版本IPC进程间通信主题之共享内存

一.什么是共享内存 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。一旦这样的内存映射到共享它的进程的地址空间,这些进程...

lvyibin890 ⋅ 2017/06/09 ⋅ 0

CHROME进程间通信

chrome设计时采用的一种方法是多进程技术(不仅限于此,也有其他方式),其中涉及到一个重要的问题就是进程间通信。 one tab, one process 可以从操作系统任务管理器以及CHROME自带的任务管理...

西昆仑 ⋅ 2012/10/05 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

收集自网络的wordpress 分页导航的代码教程(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageNavi,插件的...

Rhymo-Wu ⋅ 25分钟前 ⋅ 0

微服务 WildFly Swarm 入门

Hello World 就像前面章节中的其他框架一样,我们希望添加一些基本的 Hello-world 功能,然后在其上逐步添加更多的功能。让我们从在我们的项目中创建一个 HolaResources 开始。您可以使用您的...

woshixin ⋅ 31分钟前 ⋅ 0

Maven的安装和Eclipse的配置

1. 下载Maven 下载地址 2. 解压压缩包,放到自己习惯的硬盘中 此处我将其放到了 D:\Tools 目录下。 3. 配置环境变量 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量。 在系统变量中新建,变...

影狼 ⋅ 39分钟前 ⋅ 0

python pip使用国内镜像的方法

国内源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://......

良言 ⋅ 39分钟前 ⋅ 0

对于url变化的spa应该如何使用微信jssdk

使用vue单页面碰上微信jssdk config验证失败的坑。第一次成功 之后切换页面全部失败,找到了解决方法,第一次验证成功后保存验证信息 切换页面时验证信息直接拿来用,加一个wx.error() 失败时...

孙冠峰 ⋅ 44分钟前 ⋅ 0

Spring Cloud Gateway 一般集成

SCF发布,带来很多新东西,不过少了点教程,打开方式又和以前的不一样,比如这个SCG,压根就没有入门指导,所以这里写一个,以备后用。 一、集成 pom.xml <dependency> <groupI...

kut ⋅ 47分钟前 ⋅ 0

建造模式

《JAVA与模式》之建造模式

Cobbage ⋅ 今天 ⋅ 0

WePY框架开发的小程序如何在微信web开发者工具中运行起来

一、首先需要安装node.js,安装步骤如下: 首先下载安装包 https://nodejs.org/en/download/ 点击下载相应的zip版本 然后将文件夹解压到任意目录 比如我这里解压到了:C:\Program Files\node...

Helios51 ⋅ 今天 ⋅ 0

使用EnumSet 代替位域(32)

1、位域(Bit field):使用or 运算将几个常量合并到一个集合中 位操作,可以有效地执行 AND 、OR 这样的位操作 但是 位域比int 常量枚举缺点更多 2、java.util 包里面的EnumSet 类是有效的替...

职业搬砖20年 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部