1 / 2
文档名称:

精品范文-利用AIDL来实现由Binder进行进程间通信(IPC)_IT168文库.pdf

格式:pdf   页数:2
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

精品范文-利用AIDL来实现由Binder进行进程间通信(IPC)_IT168文库.pdf

上传人:908163988 2014/12/10 文件大小:0 KB

下载得到文件列表

精品范文-利用AIDL来实现由Binder进行进程间通信(IPC)_IT168文库.pdf

文档介绍

文档介绍:利用 AIDL来实现由 Binder进行进程间通信( IPC)
在写这篇文章之前,我一直在思考这几个问题:
问题1:为什么需要IPC?
问题2:什么是Binder?
问题3:什么是AIDL?
问题4:IPC同Activity Intent, Broadcast, Content provider,Service之间有什么区别与联系?
如果您能轻松回答所有问题,那么恭喜您已经学会抢答了^-^ 直接PASS。
我想答案应该是这样的:
1. 为什么需要 IPC? IPC即进程间通信,因为基于Linux的Android不支持从当前进程访问另一个进程的数
据,需要用特定的途径去实现,Android使用Binder来实现进程间通信,具体应用场景一般为有一个独立
运行的Service端,从客户端(一个独立进程)访问Service端(另一个独立进程),例如可以在后台运行
的音乐播放Service,以及音乐播放控制界面(客户端)。
,把进程间包扎在一起,是Android的一种用实现IPC的方法,特点是只需要考贝一次
内存,便可以实现跨进程的函数调用,效率较高,速度较快,(相对于Socket/管道/消息队列), 具体
参考这里。
,只要用几条简单的函数声明,AIDL就会帮忙生成一个JAVA文
件,包括了一个Proxy和Stub的访问接口,以及用于它们之间通信的Parcel,并保证Parcel的输入输出的
顺序一致性,其中Proxy用于客户端进程,Stub用于Service端进程,有经验的程序猿完全可以自己写出
Proxy和Stub的代码,而不需要使用AIDL,很明显,我不是这样的人。同时,即使是有经验的程序猿,为
了节省时间,也会选择使用AIDL,看Android源码便可见一斑。
Intent, Broadcast, Content provider,Service之间有什么区别与联系?
在android系统中,没有一个公共的内存区域,供多个应用共享存储数据,ContentProvid
er实现多应用跨进程共享数据,而IPC指两个或多个程序间相互调用和通信,不但可以共享数据,还能
共享某个公共函数,一个SERVICE可以有几个client端访问与调用。
Intent可以携带一些数据打开另一个程序(进程),但无法进行进程间实时的通信。
Broadcast可以实现大规模杀伤性广播喊话,但也无法进行双向的进程间交流,IPC(Binder)可以。
Service 是Android后台运行的程序,如果想同其进行交互,有几种方式一种是本地Service直接访问,一
种是使用Messenger通信(基于AIDL),支持单线程,一种就是AIDL方式,支持多线程同时访
问。
好了,有了这些预备知识,我想我应该写点程序了,就写一个带控制端(客户端)的音乐播放器吧。
为了节约时间,在GITHUB找了一个写了大半拉