Android IPC通信
yangxi_001
这个作者很懒,什么都没留下…
展开
-
Android:学习AIDL,这一篇文章就够了(下)
前言上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识。强烈建议大家在看这篇博文之前先看一下上一篇博文:Android:学习AIDL,这一篇文章就够了(上)注:文中所有代码均源自上一篇博文中的例子。 另:在看这篇博文之前,建议先将上一篇博文中的代转载 2016-12-27 19:03:38 · 502 阅读 · 0 评论 -
Android的IPC机制(六)—— BroadcastReceiver的使用
综述 在Android的四大组件中除了ContentProvider能够用于进程间的通信外,还有一个也能够用于进程间的通信,那就是BroadcastReceiver。BroadcastReceiver翻译成中文为广播接收器,既然作为广播接收器,那么必然就有Broadcast。在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastRecei转载 2017-12-19 16:48:13 · 350 阅读 · 0 评论 -
Android的IPC机制(五)—— ContentProvider的使用
综述 对于前面一些的ipc过程都是Service与客户端进行通信。那么在不同应用之间ipc可以采用哪些方式呢?首先我们会想到ContentProvider,因为我们平时获取手机上的联系人,图片等等都是通过ContentProvider得到的。ContentProvider是Android的四大组件之一。翻译成中文为内容提供者,也就是可以将自己的数据提供给别的应用进行使用。那么我们现在就来转载 2017-12-19 16:47:26 · 359 阅读 · 0 评论 -
Android的IPC机制(四)—— Messenger的使用及源码分析
综述 在前面几篇中我们详细的介绍了AIDL的使用及原理。在这里我们感觉到AIDL的在使用过程中还是比较复杂的,那么有没有一种简单的方法来实现进程间的通信呢?当然是有的,那就是利用Messenger。Messenger翻译为信使,从他的名字就可以看出这个Messenger就是作为传递消息用的。那么我们就来看一下这个Messenger到底是如何使用的,以及在它内部是如何实现的。Mes转载 2017-12-19 16:46:19 · 273 阅读 · 0 评论 -
Android的IPC机制(三)——Binder连接池
综述 前两篇说到AIDL的使用方法,但是当我们的项目很大时,很多模块都需要用到Service,我们总不能为每一个模块都创建一个Service吧,这样一来我们的应用就会显得很笨重。那么有没有一种解决方案叫我们只需要创建一个Service,然后去管理AIDL呢?在任玉刚的《Android开发艺术探索》中给出了一个解决方案,那就是Binder连接池。在这里我们看一下他是怎么实现的。Bi转载 2017-12-19 16:44:59 · 417 阅读 · 0 评论 -
Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互。不同的操作系统都有他们自己的一套IPC机制。例如在Linux操作系统中可以通过管道、信号量、消息队列、内存共享、套接字等进行进程间通信。那么在Android系统中我们可以通过Binder来进行进程间的通信。当然除了Binder我们还可以使用Socket来进行进程间的通信。转载 2017-12-19 16:38:45 · 476 阅读 · 0 评论 -
Android的IPC机制(二)——AIDL实现原理简析
综述 上篇说到AIDL的使用方法,我们不能仅仅只是满足对AIDL的使用,那么对于AIDL到底是如何实现的呢?为什么我们只是创建一个AIDL文件,系统就会为我们自动生成一个Java文件,那么这个Java文件里面到底包含了哪些内容呢?我们今天就来研究一下。AIDL实现原理 在这里我们首先看一下AIDL是怎么实现的。当我们创建一个Service和一个AIDL接口的时候,然后创转载 2017-12-19 16:42:07 · 307 阅读 · 0 评论 -
Android Binder设计与实现 - 设计篇
关键词Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Bin转载 2016-12-28 19:17:57 · 296 阅读 · 0 评论 -
Android Binder机制浅析
摘要Binder是Android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2是对Binder机制进行深入底层乃至驱动的分析这一过程相当困难且相当耗时,因此并不适合重复造轮子。本文的角度是对Android的Binder机制从整体和概念上进行分析,能够让大家很快明白到底什么转载 2016-12-28 19:14:58 · 289 阅读 · 0 评论 -
学习AIDL,这一篇文章就够了
1、概述AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。是的,首先我们知道的第一点就是:AIDL是一种语言。既然是一种语言,那么相应的就很自然的衍生出了一些问题:为什么要设计出这么一门语言?它有哪些语法?我们应该如何使用它?再深入一点,我们可以思考,我们是如何通过它来达到我们的目的的?更深入一点转载 2016-12-28 18:29:41 · 491 阅读 · 0 评论 -
Binder学习总结_native(1)
这几天一直在看binder的结构,感叹这样天才的设计。现在只研究到binder的native框架,在IPCThreadState以下,真正的driver和数据交换还需要进一步研究。在此记录一些目前的体会。1.IInterface的作用个人感觉,这个IInterface严格上讲,并不是Binder这个框架的一部分。它的作用是提供了一个common的方式,可以将IBinder与Se转载 2016-12-27 19:15:53 · 557 阅读 · 0 评论 -
Binder机制分析(3)—— 实现自己的Service
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. 到这里,我们应该已经理解了Android的Binder机制,当需要自己实现一个核心服务时,应该注意哪些问题呢? 1)核心服务通常在独立的进程里执行。 2)必须提供IBinder 接口,让应用程序可以跨进程绑定和呼叫。 3)因为共享,所以必须确保多线程安全(Thread-safe)。转载 2016-12-27 19:14:50 · 317 阅读 · 0 评论 -
Binder机制分析(2)——从MediaService中看Binder的实现和使用(2)
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. 如果我们要使用MediaPlayerService服务,那么MediaPlayerService客户端就需要与MediaPlayerService(即BnMediaPlayerService)交互。交互的过程需要建立一个循环,然后读写Binder设备。注意,在BnMediaPlayerService中并没有转载 2016-12-27 19:13:03 · 300 阅读 · 0 评论 -
Binder机制分析(2)——从MediaService中看Binder的实现和使用(1)
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。1. MediaService入口, 获取ServiceManager下面我们就从MediaService的源码入手进行分析,首先,MediaService的入口函数的实现位于“framework\base\media\mediaServer\main_mediaserver.cpp”。 int m转载 2016-12-27 19:11:49 · 373 阅读 · 0 评论 -
Binder机制分析(1)——Binder结构简介
本文是对《Android技术内幕-系统卷》第三章的摘抄和整理。一。Binder 介绍Binder机制实际上就是一个类似于C/S的构架:客户端进程要想与服务端进程通信就必须在客户端建立一个服务端进程代理对象,然后将请求发送到代理对象上;代理对象通过Binder驱动将请求转发给服务端进程处理;当处理完成之后,再次通过Binder驱动传回给代理对象,客户端从代理对象获取响应信息。转载 2016-12-27 19:10:24 · 430 阅读 · 0 评论 -
Android Messenger源码分析
我们直接看源码:[java] view plain copy /** * Reference to a Handler, which others can use to send messages to it. * This allows for the implementation of message-based转载 2016-12-27 19:07:19 · 461 阅读 · 0 评论 -
Android应用进程间通信之Messenger信使使用及源码浅析
1 背景这个知识点是个low货,刚开始其实想在之前一篇文章《Android异步消息处理机制详解及源码分析》一文中作为一个知识点分析的,但是想了又想又觉得该放在后面进程间通信分析时再分析。然并卵,还是单独拿出来写一篇分析一下吧。提到Message和Handler其实大家都很熟悉,但是说到Messenger估计有些人还是不太常用的,更有甚者都能把Messenger拼写错误为Messag转载 2016-12-27 19:06:12 · 342 阅读 · 0 评论 -
Android:学习AIDL,这一篇文章就够了(上)
前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我辈年轻人自当有一种一往无前的锐气,标题大气一点岂不更好?并且大家都是文明人,总归更多的是理解与补充而不是侮辱与谩骂?所以最终还是厚颜用了这么一个不怎么有耻的标题。好了,接下来进入正题,转载 2016-12-27 19:02:02 · 421 阅读 · 0 评论 -
Android的IPC机制(七)—— Socket的原理简析与使用
综述 在前面的几篇文章中,我们介绍了许多在Android中有关进程间通信的方式,但都是在一个设备上进行的进程间通信,而这时候我们两个应用在不同的设备上的时候,在这个时候我们就不能通过前方介绍的那些方法来解决了。但是我们通过网络进行通信来处理这个问题。今天就来介绍一下Android中网络通信的其中一种方式——Socket。Socket翻译为中文为套接字,而现在套接字也成为了操作系统中的一部转载 2017-12-19 16:52:42 · 462 阅读 · 0 评论