android如何实现进程间通信

一.使用bundle

当我们在一个进程中启动了另一个进程的activity、service、receiver,我们就可以在bundle中附加我们需要传输给远程进程的信息并通过intent发送出去。

我们传输的数据要必须能被序列化.

以上原理都是bundle

当然service也是支持通过intent启动来传递数据的

这种方案是一种最最简单的进程间通信

二.使用文件共享

三.使用Messenger

1.简介

Messenger的底层是aidl

2.Aidl和messager的区别

原因是AIDL可以处理多线程、多客户端并发访问的,而Messenger只能是单线程处理。

Messenger、AIDL、Binder这三个东西的关系是这样的: AIDL是对Binder的封装,Messenger是对AIDL的封装,就是为了更好的方便开发者在不同场景下使用进程间通信。

四.使用AIDL

1.aidl的基础

aidl常常基于绑定服务,aidl底层是binder

绑定服务不属于跨进程,所以不要和aidl混合起来使用,只是说ipc时如使用aidl方式常常使用绑定服务。

2.aidl原理

基于proxy_stub模式说明,具体参以前博客。

3.具体流程

!!!其实最核心的是aidl接口的定义。

服务端

1. 服务端首先要创建一个service用来监听客户端的链接请求

2. 然后创建一个aidl文件,将暴露给客户端的接口在这个aidl文件中声明。

3. 最后在service中实现这个aidl即可。

客户端

1. 客户端所要做的事情就稍微简单一些,首先需要绑定服务端的service,

2. 绑定成功后,将服务端返回的binder对象转成aidl接口所属的类型,

3. 接着就可以调用aidl中的方法了。

上边描写的只是一个感性的过程,aidl的实现过程远不止这么简单。

4.一个例子

见:

https://github.com/zhujainxipan/MyApplication

http://android.jobbole.com/80789/

五.使用ContentProvider

六.使用socket

时间: 2025-01-06 22:27:30

android如何实现进程间通信的相关文章

Android AIDL实现进程间通信探索_Android

前言:       前面总结了程序间共享数据,可以使用ContentProvider也可以使用SharedPreference,那么进程间怎么共享内存呢?Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信.       为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Inter

浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路_Android

   上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client.Server.Service Manager和驱动程序Binder四个组件构成.本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能.         既然Service Manager组件是用来管理Serve

基于Android AIDL进程间通信接口使用介绍_Android

AIDL:Android Interface Definition Language,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口. ICP:Interprocess Communication ,内部进程通信. 使用: 1.先创建一个aidl文件,aidl文件的定义和java代码类似,但是!它可以引用其它aidl文件中定义的接口和类,但是不能引用自定义的java类文件中定义的接口和类,要引用自定义的接口或类,需要为此类也定义一个对应的aidl文件,并且此

Android系统专题

android FragmentTabhost实现选项卡 Android实现异常记录并重启程序 android联系人信息的存储结构 android js互调例子 android实现垂直seekbar Android实现左滑退出Activity(完美封装) android ant最简单的打包签名及混淆方法 Android动画复习:包括缩放动画.平移动画.旋转动画和透明度动 Android自定义View之使用贝塞尔曲线实现流量进度条 Android Zip压缩工具类 Android中Applicat

八一八android与Linux的关系

Linux与Androld的关系 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序.下面我们就来分析一下它们之间究竟有什么千丝万缕关系? 1 为什么会选择Linux 成熟的操作系统有很多,比如Unix系统.但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如: (1)强大的内存管理和进程管理方案 (2)基于权限的安全模式 (3)支持共享库 (4)经过认证的驱动模型

android APK应用安装过程以及默认安装路径[转]

一:安装过程 APK是类似Symbian Sis或Sisx的文件格式.通过将APK文件直接传到Android模拟器或Android手机中执行即可安装. Android应用安装有如下四种方式 1.        系统应用安装――开机时完成,没有安装界面 2.        网络下载应用安装――通过market应用完成,没有安装界面 3.        ADB工具安装――没有安装界面. 4.        第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由packageinstaller

《Android和PHP开发最佳实践》一2.4 Android系统四大组件

2.4 Android系统四大组件 之前我们已经学习了Android应用框架的四大核心要点,对Android的应用框架有了一个总体性的了解,接下来我们要学习Android应用程序中的四个重要组成部分,也就是我们一般所说的"应用组件".在前面讲解四大核心要点的篇幅中,我们曾经提到了控件(View控件)的概念,现在我们再来学习一下Android应用框架中的组件的概念.那么何谓组件呢?顾名思义,组件当然要比控件复杂,简而言之,组件是用于工业化组装的部件.要达到组件的标准,必须符合三个要求,以

Android应用程序安装过程源代码分析

转自 :http://blog.csdn.net/luoshengyang/article/details/6766010 Android系统在启动的过程中,会启动一个应用程序管理服务PackageManagerService,这个服务负责扫描系统中特定的目录,找到里面的应用程序文件,即以Apk为后缀的文件,然后对这些文件进解析,得到应用程序的相关信息,完成应用程序的安装过程,本文将详细分析这个过程.         应用程序管理服务PackageManagerService安装应用程序的过程,

《深入解析Android 5.0系统》——导读

目 录 前言 第1章 建立Android系统开发环境 1.1 安装操作系统1.2 安装开发包 1.3 安装一些有用的工具 1.4 下载源码 第2章 Android的编译环境-- Build系统 第3章 连接Android和Linu内核的 桥梁--Android的Bionic 进程间通信--Android 的Binder 第5章 连接Java和C/C++层的 关键--Android的JNI 第6章 Android的同步和消息机制 第6章 Android的同步和消息机制 6.1 原子操作 6.2 A