`
喧嚣求静
  • 浏览: 550805 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android跨进程IPC通信探讨(A应用与B应用通信)

 
阅读更多

android跨进程IPC通信探讨(A应用与B应用通信)

在生活中使用APP时经常会看基于支付宝,微信等平台开发的第三方APP,在自己使用的APP中点击某个操作启动支付宝或微信,这就属于进程通信。

android系统是基于linux系统中的进程管理,每一个APP运行在自己的进程中,有自己的安全权限,想与其他进程中的应用通信,必须使用特定的规范技术。

在技术上,android可有以下几种技术实现

1.Intent

    使用隐示意图发起调用,如调用系统照相机,bundle封装数据传递,

    调用startActivityForResult(intent, requestCode),实现交互数据

2.使用Messenger(其底层使用aidl)

    如果你想让你的接口在多个不同的进程间工作,你可以为服务创建一个带有Messenger的接口。在这种情况下,服务将定义一个Handler来响应不同类型的Message对象。这个Handler是Messenger的基础,它可以与客户共享一个IBinder,允许客户使用Message对象向服务发送指令。以此,客户可以定义一个属于自己的Messenger,这样,服务就可以把消息传递回来。

3.使用AIDL

AIDL(Android接口定义语言-Android Interface Definition Language)执行了把一个对象分解到操作系统能理解的基元,并安排它们到各个进程间来完成IPC等所有工作。前文中提到的技术,使用一个Messenger(消息传送器)就是基于AIDL和其下面的结构。如前所述,Messenger创建了一个队列,把所有的请求都放在一个线程中,所以服务一次只接收一个请求。然而,如果想你的服务同时接收多个请求,那么你可以直接创建AIDL。在这种情况下,你的服务必须有能力执行多个纯程,并且为线程安全。

 

参考文档:

http://wiki.eoeandroid.com/Intents_and_Intent_Filters

http://wiki.eoeandroid.com/Services

http://wiki.eoeandroid.com/Bound_Services

相关文章

android跨进程IPC通信探讨(A应用与B应用通信)之二

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics