IPC之AIDL&binder关系
binder是一个远程对象的基础类,核心部分是远程调用机制,这部分是由IBinder定义的。它是对IBinder类的实现,其中IBinder类提供这样一个类的标准的本地化实现方式。
大多数开发者不会去直接实现Binder类,而是用AIDL工具来描述他们自己想要的接口,借助它来生成一个合适的Binder子类。然而,你也可以直接继承Binder来实现你自定义的RPC协议,或者更简单地,实例化一个原生的Binder对象,然后直接将它作为token能够在不同的进程里直接被调用。
binder只是一个很基础的IPC原子部分。它对一个应用的生命周期没有影响,只要创建它的所在进程一直运行,它就一直可调用。为了正确使用它,你必须在应用的一级控件(service, activity或者contentprovider)的context里进行操作,让系统知道你所在的进程,并且保证它一直运行。
有一种情况你要注意,你所在的进程可能会被销毁。当你的进程再次启动时,你就需要重新创建一个Binder然后重新绑定它。例如,如果你正在Activity里使用binder,你的acitvity所在的进程可能会被销毁,这样你的activity无法被调用;如果你的activity后面被重新创建,你需要创建一个新的binder,然后再次将它传递到正确的位置支。你还需要意识到,你的进程可能因为其它原因被启动(例如接收广播),但是它不会重新创建activity来调用你的代码来创建新的binder。
1、AIDL(Android Interface Define Language),是android的一种接口定义语言,类似于IDL。
借助它,你可以定义接口,使得客户端和服务端之间实现进程间通信。对android来说, 一个进程无法通过正常的方法来访问另一个进程的内存空间。可以说,他们需要把对象分解成操作系统可以理解的原子类型,然后使对象突破限制在不同进程之间进行传输。具体实现这种机制的代码写起来非常枯燥,所以android为你提供了AIDL语言来进行处理。
注意:
a.只有当你需要来自不同应用的客户端通过IPC通信来访问你的服务时,并且想在服务里处理多线程的业务,这时就需要使用AIDL。
b.如果你不需要同时对几个应用进程IPC操作,你最好通过实现Binder接口来创建你的接口。
c.如果你仍需要执行IPC操作,但不需要处理多线程,使用Messenger来实现接口即可。
d.无论如何,在实现AIDL之前确保你完全理解Bound Service相关知识。
2、异同点
1.他们都与IPC(远程)调用有关。
2.本质不同,Binder是一个对象,继承了IBinder对象,你可以借助它来自定义RPC协议。AIDL是android提供的接口定义语言,借助这个工具,你可以很轻松地实现IPC通信机制,根据需要灵活定义接口,
3.作用范围不同。如果是在一个应用里实现远程调用,使用Binder即可,没必要使用AIDL。如果涉及到在多个应用程序之间使用IPC通信,并且在服务又有多线程业务处理,这时可以使用AIDL。
http://www.myexception.cn/ai/1844929.html
IPC之AIDL&binder关系的更多相关文章
- IPC进程间通信 - AIDL+Binder
原理 http://www.linuxidc.com/Linux/2012-07/66195.htm 服务端,客户端处在用户空间,而binder驱动处在内核空间. 服务器端.一个Binder服 ...
- [置顶] 深入理解android之IPC机制与Binder框架
[android之IPC机制与Binder框架] [Binder框架.Parcel.Proxy-Stub以及AIDL] Abstract [每个平台都会有自己一套跨进程的IPC机制,让不同进程里的两个 ...
- android service 的各种用法(IPC、AIDL)
http://my.oschina.net/mopidick/blog/132325 最近在学android service,感觉终于把service的各种使用场景和用到的技术整理得比较明白了,受益颇 ...
- Android 核心分析 之六 IPC框架分析 Binder,Service,Service manager
IPC框架分析 Binder,Service,Service manager 我首先从宏观的角度观察Binder,Service,Service Manager,并阐述各自的概念.从Linux的概念空 ...
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...
- 深入理解Android IPC机制之Binder机制
Binder是Android系统进程间通信(IPC)方式之一.Linux已经拥有的进程间通信IPC手段包括(Internet Process Connection): 管道(Pipe).信号(Sign ...
- AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)
首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...
- Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了And ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信 ...
随机推荐
- [label][Chrome-Extension] How to start Chrome Extension's development
Firstly , you should read these two pages. https://developer.chrome.com/extensions/overview https:/ ...
- Internal error(U783)
今天打开代码时一个单元文件报这个错误Internal error(U783),不知道什么原因,然后多次关闭打开后,又没报这个错误了,记录下 http://www.aiuxian.com/article ...
- NET Core 拓展方法和中间件集合(支持NET Core2.0+)
# Pure.NETCoreExtentensions https://github.com/purestackorg/Pure.NETCoreExtensions NET Core 拓展方法和中间件 ...
- Cookie客户端缓存.Session.Application
Cookie客户端缓存. 1.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那么久不得不谈本地存储了. 本地存储的好处: 一是避免取回数据前页面一片空白,如果不需要 ...
- 安装php环境
安装xampp 安装zend studio 安装Composer-Setup 安装Z2 ZendFramework-2.4.9 I can install successfully using the ...
- docker-runc not installed on system 问题
问题描述: docker运行镜像的时候,报错如下: 1 2 3 [root@etcd1 k8s]# docker run -it registry.helloworld.com/test/atsd:l ...
- jdk动态代理 案例
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...
- “全栈2019”Java第一百零一章:局部内部类覆盖作用域内成员详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Mysql Insert Or Update语法实例
有的时候会需要写一段insert的sql,如果主键存在,则update:如果主键不存在,则insert.Mysql中提供了这样的用法:ON DUPLICATE KEY UPDATE.下面就看看它是如何 ...
- 关于android分辨率兼容问题
关于手机分辨率相关术语和概念 屏幕尺寸:实际的物理尺寸,屏幕的对角线测量.为了方便,android把所有的屏幕尺寸分为了4个广义的大小:小,正常,大,特大. 屏幕密度:屏幕的物理面积内像素的数量,通常 ...