美文网首页
Android进程间通信(IPC)方式

Android进程间通信(IPC)方式

作者: William_hi | 来源:发表于2018-05-14 11:28 被阅读0次

不好意思,距离上次更新博客已经快两年了,网上很多介绍进程间通信的文章,而且当时有同事在组内分享过IPC方式,所以就没再写了,但是,还是大概总结一下吧。每个人都有自己的理解,在此就简单聊一下我的理解吧,好吧,直接进入主题。

1、Activity

Activity有显示启动和隐式启动,如果直接打开另外一个app的Avtivity可不可以呢,比如在淘宝上买个东西,跳转到支付宝去支付,就可以通过隐式启动的方式。

2、AIDL

一方面,服务端进程创建一个Service来监听客户端的连接请求,还需要创建一个AIDL文件,在这里声明需要暴露给客户端的接口,然后在Service中实现这个接口。另一方面,客户端进程绑定服务端的Service,将服务端返回的Binder对象转成AIDL接口所属的类型,然后就可以调用AIDL中的方法了。比如设置黑名单,来电的时候自动挂断,就是通过AIDL。

3、Messenger

Messenger可以理解为信使,在Messenger中放入数据,然后在不同进程间传递。它的底层实现是AIDL。使用时的大概思想就是在服务端进程创建Service,在这个Service中创建Messenger对象,在onBind中返回这个Messenger对象底层的Binder;客户端进程绑定Service,然后用服务端返回的IBinder对象创建一个Messager,就可以使用这个Messager向服务端发消息了。具体写法就不在这里贴了,大家可以在网上搜一下。

4、ContentProvider

ContentProvider的使用很简单,服务端定义增删改查,客户端通过uri的方式调用,比如通讯录、手机里的音乐列表都是通过ContentProvider提供服务的。

5、BroadcastReceiver

这就更简单了,一个进程发送广播,另一个进程接收广播。

6、Socket

一方通过ServerSocket提供服务,一方通过Socket请求服务,也能实现进程间通信,不过这种方式在实际应用中比较少。

7、文件共享

两个进程通过读/写同一个文件,也能交换数据,实现通信,不过要考虑并发的情况。另外,需要注意的是,Sharedpreferences是不安全的,系统对Sharedpreferences的读/写有一定的缓存策略,即在内存中会有一份Sharedpreferences文件的缓存,因此,多进程间使用它的时候是不可靠的。

前5个是不是可以理解为四大组件(其中AIDL和Messenger都是通过bindService实现的,从另外一个角度也可以理解为四大组件中的Service吧),而且它们的本质上都是基于Binder。对于Binder的理解,从Android Framework角度上讲,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等)和相应ManagerService的桥梁;从应用层来说,Binder是客户端和服务端进行通信的媒介,当bindService时,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务。如果想彻底理解Binder,建议看一下Activity启动流程和AIDL实现原理,这两个内容分别对应Framework层和应用层。

这里只是简单的总结一下,没有具体的写法说明,如果想看一下AIDL和Messenger的写法,可以看一下这篇文章

参考《Android开发艺术探索》

相关文章

  • Binder机制

    进程间通信方式 Android Binder框架图 Android系统框架 IPC 进程通信原理 Binder原理...

  • 仅限两个App间传递信息方法

    Android 进程间通信有很多方法,比如Android中进程间通信(IPC)方式总结 由于项目需求简单,只是由A...

  • IPC、Window小结

    1、IPC机制 1、Android IPC简介 IPC:含义为进程间通信或者跨进程通信。 2、Android中的多...

  • Android IPC(进程间通信)

    关于Android 进程间通信的基本知识以及Android中进程间通信的方式 IPC简介与基础概念 基础 andr...

  • 知识库 - 收藏集 - 掘金

    Android 进程间通信 AIDL详解 - 掘金最近项目有进程间通信的需求,我使用的是IPC通信的方式,这是An...

  • AIDL使用

    1、定义 AIDL(Android Interface Define Language) 是IPC进程间通信方式的...

  • Android IPC(一)

    Android IPC IPC简介 IPC即Inter-Process Communication(进程间通信)。...

  • 无标题文章

    Android IPC IPC简介 IPC即Inter-Process Communication(进程间通信)。...

  • Android进程间通信IPC详解

    最近项目有进程间通信的需求,我使用的是IPC通信的方式,这是Android中很传统的一种进程间通信的方式,在这里分...

  • Android Binder通信

    下面先看看Binder通信的模型图: Binder是Android系统进程间通信(IPC)方式之一。Linux已经...

网友评论

      本文标题:Android进程间通信(IPC)方式

      本文链接:https://www.haomeiwen.com/subject/fbsjsttx.html