Android Binder 跨进程传递对象的本质

之前看过一些对Binder的分析,存在一个问题没有理解,问题是:Binder驱动实现对象传递的本质是传递什么?是地址?还是什么? 两个对象在不同的进程中,如何引用其它进程中的对象? 我想知道传递的本质。

0

2个回答

Parcelable

0

通过Binder传递的对象有两种,Parcel和 IBinder

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android 跨进程内存泄露
内存泄露的检测和修复一直是每个APP的重点和难点,也有很多文章讲述了如何检测和修复。本篇文章 n结合最近开发的项目遇到的实例,讲述下Android Binder导致的内存泄露的一个案例。发现问题参与的项目在最近的版本接入了一个开源的内存检测工具LeakCanary,在提交给QA测试验证后。 n瞬间检测出来N多的内存泄露,XXXActivity泄露,XXXActivity泄露…坑爹的是,这种泄露还不是
Android Binder跨进程与非跨进程的传输异同源码分析
网上很多文章都介绍了Service的绑定过程,但是并没有介绍对于跨进程与非跨进程,对于不同的返回值,其具体有什么区别,以及具体是怎么实现的。这篇文章就根据源码分析Android究竟是在哪部分来控制跨进程与非跨进程Binder的传输的,Binder究竟是怎么传输的。
Android进阶——Android跨进程通讯机制之Binder、IBinder、Parcel、AIDL
前言nnBinder机制是Android系统提供的跨进程通讯机制,这篇文章开始会从Linux相关的基础概念知识开始介绍,从基础概念知识中引出Binder机制,归纳Binder机制与Linux系统的跨进程机制的优缺点,接着分析Binder的通信模型和原理,而Binder机制最佳体现就是AIDL,所以在后面会分析AIDL的实现原理,最后简单的提下AMS的Binder体系,整篇文章中间会穿插有IBind...
Android Binder跨进程通信原理分析
我们知道进程之间,虚拟地址不同,是不能直接通信的,这是一种保护机制。用户空间可以通过System calls(系统回调)与内核空间通信的,如果在内核空间中有一个模块,能够完成数据的转发,那么是不是两个进程就可以通信了呢?
瞎聊!Android之aidl进程之间传递对象简单分析加 源码
        Android里多进程通讯的方式有许多,广播,内容提供者(ContentProvider),Socket,序列化和Binder等,今天就聊聊序列化和binder吧,也就是我们说的AIDL。先看个例子吧!看看怎样使用AIDL在不同进程之间传递值。我们先建三个主要的文件Book.aidl、IBookManager.aidl、Book.java其中Book.java的内容,就一个实体类,...
[总结]手动实现一个Binder来实现跨进程通讯
今天在学习任主席的Android艺术开发探索时学习到了Binder,特此在本文中做一下对于Binder的总结。首先我们为什么会使用Binder呢?在Android系统当中,进程与进程是不可以进行直接访问的,这保证了Android进程的独立性(比如一个APP崩掉了,不会导致所有APP崩掉),同时也保证了Android进程的安全性。但是Andorid系统进程间不可以直接进行通讯,那么我们要如何实现通讯...
Android Service:利用Binder通信中,传递自定义类型
Android Service:利用Binder通信中,传递自定义类型AIDL中支持的数据类型AIDL中支持的数据类型有:n 支持类型n 需要importn 备注 Java基本类型n 不需要importn n String, CharSequence, List, Mapn 不需要importn List,Map内的元素必须是AIDL支持的类型;List接收方必须是ArrayLis
跨进程调用异常分析总结
http://blog.csdn.net/huangyabin001/article/details/4291477112-07 20:01:19.931 7272 7272 E AndroidRuntime: FATAL EXCEPTION: mainn12-07 20:01:19.931 7272 7272 E AndroidRuntime: Process: com.miui.whe
Messenger,Handler,IBinder是如何合作实现跨进程通信的
Messenger是什么?nMessenger可直译为送信者,是Android提供的轻量级IPC(进程间通信)方案。通过它,我们可以在不同进程之间传递Message对象。n我们知道在Android中,IPC的实现大都是依赖IBinder(AIDL)机制(简单来说就是提供远程过程调用(RPC)功能,想要了解可以看nhttp://blog.csdn.net/luoshengyang/articl
跨进程通信Binder执行耗时任务
在Binder机制中有客户端和服务端。通过定义AIDL文件,客户端可以拿到服务端的IBinder接口,从而直接调用服务端的AIDL方法;而服务端同样可以通过回调的方式,拿到客户端的AIDL方法进行回调。rn所有的AIDL方法都是在服务端的Binder线程池中执行的,也就是说,每一个AIDL方法执行的时候都会在一个服务线程中执行。rn比如,客户端(Activity)通过ServiceConnecti
android跨进程IPC通信探讨(A应用与B应用通信)
nandroid跨进程IPC通信探讨(A应用与B应用通信)rn在生活中使用APP时经常会看基于支付宝,微信等平台开发的第三方APP,在自己使用的APP中点击某个操作启动支付宝或微信,这就属于进程通信。rnandroid系统是基于linux系统中的进程管理,每一个APP运行在自己的进程中,有自己的安全权限,想与其他进程中的应用通信,必须使用特定的规范技术。rn在技术上,android可有以下几种技术...
binder传递fd的机制
进程获得的fd是进程fd table中的index, 在fd table中记录了file指针, file对象保留在kernel空间中. rnrn因此不同进程间传递fd本身并没有什么意义. rnrnrnrnbinder通过parcel传递fd的本质, 是将源进程的fd table中对应项指针, 记录到target进程的fd table中.rnclient端add的fd和server端读出的是两个值.
从AILD与bindService谈Binder进程间通信原理(上)
从AILD与bindService谈Binder进程间通信原理nnn彻底弄明白AIDL进程间通信的原理
Android 基于Aidl的跨进程间双向通信管理中心(类似于聊天室)
得益于最近有点时间和精力,我想起来了一件事。那就是在上家公司,公司要求做一个APP进程间的通信的功能,并不是APP对APP的直接跨进程通信,而是通过一个服务中心,做接收,然后,再转发,避免应用之间耦合性高,不然的话,新增一个APP,其他APP也要进行升级更新(类似于有服务中心的聊天室)。nn我就花几个小时写点东西吧,顺便记录一下nn大家都知道在Android设备上,有很多方式,比如,广播,sock...
Android跨进程通信Binder机制浅析
n 本文为自己多年来在Android实战开发过程中总结归纳的一些常见问题,现在分享出来希望对初学者有所帮助。nnn本文出自门心叼龙的博客,转载请注明出处: https://blog.csdn.net/geduo_83/article/details/86560675   nn 目录nn1. 什么IPC?Linux中现有的IPC通信方式都有哪些?nn2. 什么是Binder?nn3. 为什么 And...
将binder和socketpair结合实现任意进程间的双向通讯
binder机制是Android系统中特有的实现进程间远程通信的机制,它是基于C/S模式来实现的,一般一个是client端,一个是server端;而socketpair机制可以实现双向通讯,但是通讯范围限制在同一个进程的线程之间或者是具有亲缘关系的进程之间。本文通过将这两种机制结合起来,实现任意两个进程间的双向通讯。rn作者本人能力有限,文中有说的不对或者不合理的地方还请多多指教。rnrnrnrn
Binder学习[5]: Android ContentProvider 进程间通信原理及实现
1.Android ContentProvider 如何进行进程间通信的
Android框架之Camera(3)透过Camera服务看Binder进程间通信
Android 6.0Android Binder用来管理Android进程,用途有两个:n1、IPC(Inter Process Communication)工具,用于进程间通信。n2、RPC(Remote Procedure Call)远程函数调用,使得当前进程调用另一个进程的函数就像调用自身的函数一样。当然,她也属于IPC范畴。
android进程间通讯
Binder框架 Binder介绍 Android跨进程通讯 Activity Content Provider Broadcast AIDL
Service的绑定中,Binder跨进程与非跨进程的区别
客户端在执行bindService的时候,成功绑定服务之后,会回调MyConnection的onServiceConnected(),并且传回了服务端的通信接口抽象类Stub,抽象类Stub是继承自Binder对象,Binder对象是IBinder的实现类。 n n此IBinder即服务onBind()时返回的IBinder。测试在ServiceConnection的onServiceConnect
IPCDemo跨进程通信
android跨进程通讯的几种实现:Messenger、ContentProvider、Binder、Socket、Binder连接池
Android进程间通信之----Aidl传递对象
转载请注明出处 CSDN废墟的树前言有关Android进程间通信之Aidl编程的基本使用步骤已经在上一篇博客中有讲解,Android studio 下的aidl编程实现Android的夸进程间通信。上一篇博客中只是演示了怎么利用Aidl实现跨进程间传递Java基本类型,以及Aidl传递Bitamap对象。可能在一些场景下你需要跨进程传递一个对象,那么Aidl是否能传递一个对象呢?答案是肯定的,网上也
Intent传递对象时为什么要序列化
大家都知道进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递。至于怎么实现序列化,反序列化相信网上的帖子一大堆了就不一一阐述了nn什么是序列化n —— 序列化,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以存储到本地。n那么为什么要序列化?
Android 跨进程双向通信(Messenger与AIDL)详解
今天这篇文章主要讲一下Messenger与AIDL的区别、优缺点以及各自的使用方法。nn项目地址:https://github.com/libin7278/IPCnn对binder和IPC还不熟悉的同学可以看一下之前的文章: nIPC进程间通信/跨进程通信 nAndroid 中的Binder跨进程通信机制与AIDLnnnnMessenger与AIDL的异同nnnn一、Messenger与AIDL相
NDK、jni、Binder、AIDL、进程通信有关
1,请介绍一下NDK2,什么是NDK库?3,jni用过吗?4,如何在jni中注册native函数,有几种注册方式?5,Java 如何调用c、c++语言?6,jni如何调用java 层代码7,进程间通信的方式8,Binder机制9,简述IPC?10,什么是AIDL?11,AIDL解决了什么问题?12,AIDL如何使用?13,Android上的Inter-Process-Communication跨进...
Android使用Messenger跨进程通信
1.了解Messengern1.1Messenger概念n1.2Messenger与AIDL区别nnn2.使用注意点n2.1Service启动不了n2.2跨进程传递Object不能识别n2.3跨进程嵌套Object,序列化不完全nnn3.编写Demon3.1编写Servicen3.2AndroidManifest注册Servicen3.3编写客户端n3.4客户端、服务端添加序列化对象TestO...
Binder机制和共享内存 native
 nn匿名Binder:nn即没有向ServiceManager注册的Binder。nnBinder通信并不绝对依赖ServiceManager,它只是一个域名解析器。可有可无,有更方便。nn所以可以看到ContextImpl$ApplicationThread,ContentProvider$Transport都是没有向ServiceManager addService,只要client进程能获...
AIDL初探:夸进程的通信和跨进程的回调机制
最近一个项目涉及到跨进程的操作,我们的应用ClientApp需要用到底层的数据,但是这个数据data是在一个不断监听接收底层的服务ServiceA里面,痛苦的是这个服务是在另外一个进程里面。虽然我们可以用万能的广播机制,但这会造成系统非常大的负担。另外一种方法可以用ContentProvider,很多时候还是挺好用的,但是实时性不够,两个进程之间也缺乏交互性,所以我决定用AIDL来实现这一功能。
Android中使用AIDL时的跨进程回调—Server回调Client
Android中使用AIDL时的跨进程回调—Server回调Client
android不同进程之间的数据传递
原理:在需要传递数据的2个进程中都写一个AIDL文件,自定义一个Binder继承自AIDL所创建的哪个Binder通过Binder把进程和Service绑定起来,来达到数据互传的目的。n注意:n1、两个进程创建的AIDL文件的文件名必须一致n2、在写完AIDL文件后要点击Build目录下的Rebuild Project进行重新编译。在创建AIDL的时候,系统不会自动进行编译,所以必须进行手动
android 进程通讯数据为什么要实现序列化
android不同的进程都有自己独立的内存空间,且相互之间不能进行访问。如果像我们平常传一个句柄的方式去传值的话肯定是失败的,因为句柄也是指定内存空间的一个区域。现在进程无法访问目标进程的内存空间,所以句柄传过去也是没有用的。 n 所以我们必须将要传输的数据转换成能够在内存空间流通的形式。这个转化过程就叫做序列化和反序列化。 简单来说是这样的:比如现在我们要将一个对象的数据从客户端传到服务端去,
利用AIDL进程间传输图片例子
IDE:Android studio 1.5 测试机:Android 5.0
Android Binder传递文件描述符原理分析
Android Binder传递文件描述符原理分析前言问题描述问题原因n前言nBinder是Android中最常用,最重要的进程间通信机制。我们知道,Binder不仅可以传递普通的数据,还可以传递文件描述符。本文尝试分析Binder传递文件描述符的原理,切入点是工作中遇到一个和文件藐视符相关的问题。本文讲解分析和解决该问题的思路,在分析该问题的过程中,Binder传递文件描述符的原理也会呈现出来。...
Android中实现跨进程通信(IPC)的方式(三)之观察者模式
前言nn在Android中实现跨进程通信(IPC)的几种方式(一)中介绍了什么是多进程,为什么需要多进程,多进程的优缺点等。这篇我们将会使用AIDL来实现跨进程通信 n 在Android中实现跨进程通信(IPC)的几种方式(二)中讲解了怎么用AIDL实现跨进程通信。如果还不了解什么AIDL,那么可以看一下这篇文章。nn背景nn现在有一个需求是在另外一个进程中进行数据处理,我们需要获取它的处理结果...
关于跨进程调用activity的问题
写这个调用的时候犯了一个习惯性错误,总以为前面的包名和后面调用的activity的包名是一样的,导致总是出现activity没有在配置文件中注册的问题,其实ComponentName的第一个参数就是配置文件的包名,而第二个参数是这个activity的包名,这两者没有必然的联系。另外在被调用的activity的属性中需要加入exported的属性,最后别忘了这个被调用的activity需要设置the
关于跨进程的观察者模式
记得以前面试别人时,我总喜欢问观察者模式分别在跨线程,跨进程,跨设备时该如何实现?印象中没几个人能完全答上来,而本文要讨论的就是跨进程的观察者模式。观察者模式通常就是注册回调到要观察的对象,当观察者和被观察者不在一个进程,回调就要跨进程传递。据我所知,Android中能跨进程传递的除了数据之外,就只有Binder了,所以这个回调要以Binder的形式跨进程传输。观察者传入回调的 Stub,被观
Android例子—直接通过Binder的onTransact完成跨进程通信
Android可以通过Binder的onTrensact方法来完成通信,下面就来简单试下下,还是前面那个根据 序号查询名字的例子:服务端实现:/**n * Created by Jay on 2015/8/18 0018.n */npublic class IPCService extends Service { private static final String DESCRIPTOR =
Android IPC机制(五):详解Bundle与“信使”——Messenger
本文介绍Bundle和Messenger的进程间通讯方式
Binder 跨进程通信原理浅析
关于跨进程: n为什么要跨进程呢?在Android系统中,每个进程都有分配自己的内存空间,各进程间是不能直接访问其他进程的内存的,那当一个程序要操作与另一个程序的方法怎么办呢?(比如在应用程序中隐藏SystemUI的导航栏)这时就需要跨进程通信了。Binder就是一个帮助进程进通信的虚拟设备,为什么是虚拟设备呢,因为它没有硬件,只只用代码实现的通信架构。从哪开始说? nAndroid系统首次开机启动
Binder详细解析
 《IPC机制》n"IPC"(Inter-Process  Communication)  --->进程间通信或者是跨进程通信,是指两个进程间数据交换的过程。(线程指的是CPU调度的最小单元,而进程一般指一个执行单元,通常指一个应用程序,一般一个进程可以包含多个线程。)n 一、多进程(此处多进程,讨论的是一个应用中存在多个进程的情况)n 1.同过在Mainifest中给四大组件设置属proc...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 android手游开发视频 android区块链教程