利用AIDL来实现由Binder进行进程间通信(IPC)_IT168文库.pdfVIP

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

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用AIDL来实现由Binder进行进程间通信(IPC)_IT168文库.pdf

利利 用用 AIDL来来 实实现现 由由 Binder进进行行进进程程 间间通通信信 ((IPC)) 在写这篇文章之前 ,我一直在思考这几个问 : 问 1 :为什么需要IPC ? 问 2 :什么是Binde r ? 问 3 :什么是AIDL ? 问 4 :IPC同Activ ity Intent, Broadcast, Content prov ide r ,Se rv ice之间有什么区别与联系 ? 如果您能轻松回答所有问 ,那么恭喜您 已经学会抢答了^- ^ 直接PASS。 我想答案应该是这样的 : 1. 为什么需要 IPC ? IPC即进程间通信 ,因为基于Linux的Andro id不支持从当前进程访问另一个进程的数 据 ,需要用特定的途径去实现 ,Andro id使用Binde r来实现进程间通信 ,具体应用场景一般为有一个独立 运行的Se rv ice端 ,从客户端 (一个独立进程 )访问Se rv ice端 (另一个独立进程 ) ,例如可以在后台运行 的音乐播放Se rv ice ,以及音乐播放控制界面(客户端 )。 2.Binde r意思是包扎 ,把进程间包扎在一起 ,是Andro id的一种用实现IPC的方法 ,特点是只需要考贝一次 内存 ,便可以实现跨进程的函数调用 ,效率较高 ,速度较快 , (相对于Socket/管道/消息队列 ) , 具体 参考这里 。 3.AIDL是帮助实现Binde r通信的一个工具 ,只要用几条简单的函数声明 ,AIDL就会帮忙生成一个JAVA文 件 ,包括了一个Proxy和Stub的访问接 口 ,以及用于它们之间通信的Parce l ,并保证Parce l的输入输出的 顺序一致性 ,其中Proxy用于客户端进程 ,Stub用于Se rv ice端进程 ,有经验的程序猿完全可以自己写出 Proxy和Stub的代码 ,而不需要使用AIDL ,很明显 ,我不是这样的人。同时 ,即使是有经验的程序猿 ,为 了节省时间 ,也会选择使用AIDL ,看Andro id源码便可见一斑。 4.IPC同Activ ity Intent, Broadcast, Content prov ide r ,Se rv ice之间有什么区别与联系 ? 在andro id系统中 ,没有一个公共的内存区域 ,供多个应用共享存储数据 ,C ontentP rov id e r实现多应用跨进程共享数据 ,而IPC指两个或多个程序间相互调用和通信 ,不但可以共享数据 ,还能 共享某个公共函数 ,一个SERVICE可以有几个client端访问与调用。 Intent可以携带一些数据打开另一个程序 (进程 ) ,但无法进行进程间实时的通信 。 Broadcast可以实现大规模杀伤性广播喊话 ,但也无法进行双向的进程间交流 ,IPC( B inde r)可以。 Se rv ice 是Andro id后台运行的程序 ,如果想 同其进行交互 ,有几种方式一种是本地Se rv ice直接访问 ,一 种是使用M essenge r通信 (基于AIDL) ,支持单线程 ,一种就是AIDL方式 ,支持多线程同时访 问。 好了 ,有了这些预备知识 ,我想我应该写点程序了 ,就写一个带控制端 (客户端 )的音乐播放器吧。 为了节约时间 ,在GIT HUB找了一个写了大半拉的音乐播放代码 ,大半拉我指功能完成 ,一堆BUG时程序 的样子。 用AIDL改写了播放Se rv ice的接 口 ,并写了一个简单的控制端 ,我喜欢开源 ,代码在 https://g /he rbe rtdai/Andro id- Music- Playe r ,这个应用原先带有一个很酷的功能 :可拖动的播 放列表 ,这个做为K歌用再合适不过了 ,但是我估计 K歌房里出现手机点歌还需要个 4, 5年的样子。除 此之外 ,这个程序还有个对我来说特殊的功能 :公司午睡终极武器 ==隔音催眠定时一体机 ,每天大 约午睡30分钟 ,就选择10首歌 (30分钟左右 ) ,戴上耳机开始在人声中被催眠 ,等10首歌放完后 ,音 乐停止 ,随即由周围的“人肉人声闹钟”叫醒 ,所以总结一点 ,干IT 民工的 ,得有个定制的音乐播放器 :) 关于如何使用AIDL , 这里有文章写得很好 。结合我的源码就可以看懂 了。 REF0 : http:// blog ./

文档评论(0)

weiwoduzun + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档