Android中IPC的六种方式

1.使用Bundle

  • 最简单的进程间通信方式:Intent + Bundle;
  • 支持三大组件:Activity、Service、BroadcastReceiver ;
  • 实现了Parcelable接口;
  • 可以传输基本数据类型、实现了Parcelable接口的对象、实现了Serizlizable接口的对象以及一些Android支持的特殊对象;

特殊场景:从A进程到B进程传输数据,可以从A通过Intent+Bundle启动B中的Service组件(比如IntentService),让Service在后台进行计算,计算完成后再直接启动B中真正要启动的组件,这样,目标组件就可以直接从B中获取结果。详见下图:

2.使用文件共享

  • 对文件格式没有具体要求,比如说可以试文本文件,也可以是XML文件,只要读/写双方约定数据格式即可;
  • 多线程操作会出现问题,所以说,文件共享方式适合用在对文件数据同步要求不高的进程间通信,并且要妥善处理并发读/写的问题;
  • SharedPreferences是个特例,它是Android提供的轻量级存储方案:
  •   

3.使用Messenger

  Messenger Demo(GitHub)

  • 轻量级的IPC方案,底层基于AIDL实现,通过Message在不同的进程间传递消息;
  • 一次处理一个请求,没有并发的情况。

4.使用AIDL

  AIDL文件支持的数据类型:

5.使用ContentProvider

6.使用Socket

Android DevArt6:Android中IPC的六种方式的更多相关文章

  1. Android实战技术:IPC方式简介教程

    非实时,通知性的方式 第一种方式就是Intent,Intent可以非常方便的通讯,但是它是非实时的,无法进行实时的像函数调用那样的实时的通讯. 实时的函数调用 但是IPC的根本目的还是为了实现函数的调 ...

  2. Android笔记——Android中数据的存储方式(三)

    Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...

  3. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  4. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

  5. Android 中LocalBroadcastManager的使用方式

    Android 中LocalBroadcastManager的使用方式 在android-support-v4.jar中引入了LocalBroadcastManager,称为局部通知管理器,这种通知的 ...

  6. Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了And ...

  7. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...

  8. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...

  9. (转)Android 中LocalBroadcastManager的使用方式

    发表于2个月前(2014-11-03 22:05)   阅读(37) | 评论(0) 0人收藏此文章, 我要收藏 赞0 1月10日 #长沙# OSC 源创会第32期开始报名 摘要 android中广播 ...

随机推荐

  1. maven入门安装及HelloWorld实现

    一.安装maven 1.下载    https://maven.apache.org/download.cgi     官网进行下载 2.安装 2.1  解压 本人在D盘建立一个maven文件夹,然后 ...

  2. mono搭建脚本整理

    一.介绍 mono项目致力于能够使得开发人员在Linux用C#开发程序. 该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具, 包括C #编译器和共同语言 ...

  3. scrapy框架之分布式操作

    分布式概念 分布式爬虫: 1.概念:多台机器上可以执行同一个爬虫程序,实现网站数据的分布爬取. 2.原生的scrapy是不可以实现分布式爬虫? a)调度器无法共享 b)管道无法共享 3.scrapy- ...

  4. vue的异步组件按需加载

    当build打包后,app.js过大的时候,可以考虑用异步组件的方式. import HomeHeader from "./components/Header"; import H ...

  5. es6基础(3)-正则扩展

    //正则扩展 { let regex=new RegExp('xyz','i'); let regex2=new RegExp(/xyz/i); console.log(regex.test('xyz ...

  6. 用bayes公式进行机器学习的经典案例

    用bayes公式进行机器学习的经典案例 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P ...

  7. ios8.1.1系统怎么取消下划线

    http://zhidao.baidu.com/link?url=y-3oAiOsuCSvoCD-7H2Uvgl_UI1BQQuNvA2jHKCRAGmZSH7_RrwDijKtRouMBa5yF_L ...

  8. centos7挂载本地yum文件

    https://www.cnblogs.com/aenjon/p/4081794.html

  9. Windows系统不同磁盘间的扩容教程

    1.windows系统不同磁盘的空间扩展: https://www.cnblogs.com/yunweis/p/8023098.html

  10. twisted的installReactor()函数

    #twisted的安装反应堆函数def installReactor(reactor): """ Install reactor C{reactor}. @param r ...