写在前面的当一个Android App存在某个不需要UI的后台运行需求时,或者是因为内存占用需要采用多进程方案时,我们免不了与多进程打交道。必不可少的,需要考虑Binder在其中如何实现。最常见的Binder实现当然是AIDL,然而Binder的实现绝不仅仅只有AIDL一种方式,如果止步于写.aidl,那么对于Binder,对于Android整体的跨进程传输过程的理解都只能流于形式。...
分类:
其他好文 时间:
2015-02-15 16:36:43
阅读次数:
167
如果都了解过Parcel类的实现,那么其基本只序列化基本类型的特性还不能满足我们的需求(事实上android中Binder的IPC通信中,Parcel对象也能传递Parcel对象,现实编程用得极少)。具体的Parcel类这里不做介绍。点击查看Parcel类详解
Serializable和Parcelable在现实中的应用场景,有个网友写得非常nice,强烈推荐大家有空看下。点击查看Serial...
分类:
其他好文 时间:
2015-02-13 21:16:22
阅读次数:
437
android Service Activity三种交互方式(付源码)Android应用服务器OSBeanthreadandroid Service Binder交互通信实例最下边有源代码:android SDK提供了Service,用于类似*nix守护进程或者windows的服务。Service有...
分类:
移动开发 时间:
2015-02-13 16:01:02
阅读次数:
198
Parcel其翻译为“包袱”、“包裹”。在Android系统中Binder进程间通信(IPC)中经常使用到Parcel类对象来实现客户端和服务端的数据交互,而AIDL技术也是通过Parcel来实现交互。
查阅Android源码Parcel类,其中常用方法有
obtain() 获得一个新的parcel对象,相当于java中new一个对象
dataSize() 得到当前parcel对象的...
分类:
其他好文 时间:
2015-02-13 11:44:50
阅读次数:
257
我们使用Handler都是在一个进程中使用的,如何跨进程使用Handler? 其实这个问题不难解决,自己动手对binder进行一些封装就可以简单实现。但是当你看系统源码,就会发现,其实这些android都已经为我们做好了。 使...
分类:
移动开发 时间:
2015-02-13 08:08:43
阅读次数:
204
Binder驱动笔记对于Binder驱动,可以一个个函数进行拆分学习,以管窥豹的方式进行理解。 以下函数分析都是基于驱动binder.c文件。1.binder_get_ref_for_node(target_proc,binder_node),该函数用来为Binder实体节点创建一个Binder引用节点,target_proc代表binder引用所在的进程。比如client获取service的Bin...
分类:
其他好文 时间:
2015-02-10 15:27:37
阅读次数:
219
Android深入浅出之Binder机制一 说明Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Bi...
分类:
移动开发 时间:
2015-02-10 13:02:52
阅读次数:
220
一、Server和Service Manager进程间通信 Service Manager进程启动时,已经创建了Service Manager实体对象,没有Service Manager本地对象。 Server首先获取了Server代理对象,句柄值为0。没有Server引用对象。 ...
分类:
系统相关 时间:
2015-02-08 20:37:24
阅读次数:
201
服务,作为Android四大组件之一,必然是重点。我们今天就来讲解一下有关服务的生命周期、两种开启方式以及相关用法。
服务有两种开启方式,一种是正常开启, 一种是以绑定的方式开启,当然,这两种方式可以组成混合开启。
一、服务的正常开启
正常开启服务的方法非常简单,我们先看如何定义一个服务
1、编写一个类,继承Service类。
我们先不管代码中的binder类。那个后续讲解...
分类:
移动开发 时间:
2015-02-08 09:07:07
阅读次数:
195
binder是一个远程对象的基础类,核心部分是远程调用机制,这部分是由IBinder定义的。它是对IBinder类的实现,其中IBinder类提供这样一个类的标准的本地化实现方式。
大多数开发者不会去直接实现Binder类,而是用AIDL工具来描述他们自己想要的接口,借助它来生成一个合适的Binder子类。然而,你也可以直接继承Binder来实现你自定义的RPC协议,或者更简单地,实例化一个原生...
分类:
其他好文 时间:
2015-02-07 18:55:59
阅读次数:
273