一、android 中进程间通信常用的有以下几种机制

-----------------------------------------------------------------------------------------------------------------------

名称                                 优点                                           缺点                                                    适用场景

-----------------------------------------------------------------------------------------------------------------------

Bundle                             简单易用                     只能传输Bundle支持的数据类型              四大组件间的进程通信

-----------------------------------------------------------------------------------------------------------------------

文件共享                          简单易用                      不适合高并发场景,并且无法做到       无并发访问情形,交换简单

进程间及时通信                             的数据实时性不高的场景

-----------------------------------------------------------------------------------------------------------------------

AIDL                       功能强大,支持一对多并发        使用稍复杂,需要处理好线程同步      一对多通信且有RPC需求

通信,支持实时通信

-----------------------------------------------------------------------------------------------------------------------

Messenger          功能一般,支持一对多串行     不能很好处理高并发情形,不支持           低并发的一对多即时通

通信,支持实时通信               RPC, 数据通过Message进行传输          信,无RPC需求 或者无需

只能传输Bundle支持的数据 类型           返回结果的RPC需求

----------------------------------------------------------------------------------------------------------------------

ContentProvider    在数据源访问页面功能强大,        可以理解为受约束的AIDL,        一对多的进程间的数据共享

支持一对多并发数据共享,           主要提 供数据源的CRUD操作

可通过Call方法扩展其他操作

----------------------------------------------------------------------------------------------------------------------

Socket                  功能强大,可以通过网络数             实现细节有点繁琐                          网络数据交换

字传输节流,支持一对多                ,不支持直接的RPC

并发实时通信

---------------------------------------------------------------------------------------------------------------------

二、 Bundle

Bundle实现了Parcelable接口,所以可以方便的在不同进程间传输,当在一个进程中启动了另外一个进程的Activity、Service、Receiver,可以在Bundle中附加需要传输给远程进程的信息并通过Intent发送出去。

三、文件共享

Activity1:-----------------

private void persistToFile() {

new Thread(new Runnable() {

@Override

public void run() {

User user = new User(1, "hello world", false);

File dir = new File(MyConstants.CHAPTER_2_PATH);

if (!dir.exists()) {

dir.mkdirs();

}

File cachedFile = new File(MyConstants.CACHE_FILE_PATH);

ObjectOutputStream objectOutputStream = null;

try {

objectOutputStream = new ObjectOutputStream(

new FileOutputStream(cachedFile));

objectOutputStream.writeObject(user);//利用Serializable序列化的过程

Log.d(TAG, "persist user:" + user);

} catch (IOException e) {

e.printStackTrace();

} finally {

MyUtils.close(objectOutputStream);

}

}

}).start();

}

Activity2:----------------

private void recoverFromFile() {

new Thread(new Runnable() {

@Override

public void run() {

User user = null;

File cachedFile = new File(MyConstants.CACHE_FILE_PATH);

if (cachedFile.exists()) {

//对MainActivity中user对象反序列化的过程(Serializable),

//得到的是一个新的对象

ObjectInputStream objectInputStream = null;

try {

objectInputStream = new ObjectInputStream(

new FileInputStream(cachedFile));

user = (User) objectInputStream.readObject();

Log.d(TAG, "recover user:" + user);

} catch (IOException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

} finally {

MyUtils.close(objectInputStream);

}

}

}

}).start();

}

android ipc简单理解,Android IPC 机制【1】--简介相关推荐

  1. Android之最好理解的Binder机制

    转载:http://weishu.me/2016/01/12/binder-index-for-newer/ Binder学习指南 发表于 2016-01-12   |   92条评论   |   3 ...

  2. Android开发--简单实现Android应用的启动页

    Android启动页效果展示 平时打开手机的应用时,会跳出来3秒钟的广告后,再进入应用.今天我们就来简单实现一下引导页的功能. 1.首先,新建一个activity页面,命名:SplashActivit ...

  3. android webview简单使用,android WebView 简单使用Demo

    activity配置文件:activity_main.xml android:layout_width="match_parent" android:layout_height=& ...

  4. android:exported简单理解

    最近在看微信分享.收藏和发送到朋友圈的官方文档,发现其中有一个android:exported的属性,当在向微信发送了请求后需要接受请求的返回值时,须在androidManifest设置该属性为tru ...

  5. Android之简单了解Android OS内部机制

    对于Android操作系统的启动过程,相对比较复杂,这里只是了解一下原理. 做过硬件开发都知道当我们设备接通电源后会有一个称作"引导加载程序"进行初始化,我们叫它bootloade ...

  6. Android 动画简单理解

    2019独角兽企业重金招聘Python工程师标准>>> 官网参考 参考二 Android动画分为两大块: Property Animation(属性动画) View Animatio ...

  7. messenger android 4.,简单聊聊Android AIDL之Messenger

    哈喽,大家好,接触Android的同学们对AIDL这个概念肯定不会陌生,就算没用过,那肯定也是听过.很多刚开始接触Android的朋友可能会感觉AIDL很难.今天,就用Messenger来教大家如何简 ...

  8. android scroller,深入理解Android中Scroller的滚动原理

    View的平滑滚动效果 什么是实现View的平滑滚动效果呢,举个简单的例子,一个View从在我们指定的时间内从一个位置滚动到另外一个位置,我们利用Scroller类可以实现匀速滚动,可以先加速后减速, ...

  9. Android实现简单日记,Android学习日记

    Day 7 Title UI常用组件basicView android系统中的所有UI类都是建立在View和ViewGroup这两个的基础之上的.所有View的子类称为"widget&quo ...

最新文章

  1. koa+mongoose基础入门
  2. linux环境上c++ boost安装boost_1_67_0.tar
  3. Spring Boot:定制自己的starter
  4. 《那些年啊,那些事——一个程序员的奋斗史》——61
  5. C++ STL实现的优先队列( priority_queue )
  6. 关闭C#主窗体弹出是否关闭对话框
  7. Redis数据的类型
  8. Python使用socketServer包搭建简易服务器过程详解
  9. Android 5.0新特性
  10. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
  11. Ubuntu截屏功能
  12. cogs2790. mk和tree解题报告
  13. selenium爬取拉钩网数据
  14. 获取指定年、月的具体天数
  15. java数据结构--TreeSet
  16. 【微信小程序】input输入框(87/100)
  17. C#实现将度分秒化为弧度值
  18. 着色 Shading,漫反射,高光,环境光,Blinn-Phong 反射模型,Flat Shading,Gouraud Shading,图形管线 Graphics Pipeline渲染总结
  19. OC----id 类型
  20. Windows网络重置常用指令(根据自己使用情况不定期更新)

热门文章

  1. Spark Streaming 实战案例(四) Spark Streaming 缓存、Checkpoint机制
  2. LevelDB原理及应用
  3. Java获取泛型T的类型 T.class
  4. Centos7安装时引导错误以及解决方案
  5. .NET HttpGet 获取服务器文件下的图片信息 同步和异步方式处理
  6. RHCSA 系列(十四): 在 RHEL 7 中设置基于 LDAP 的认证
  7. 在jQuery和JavaScript中,实现转跳
  8. IT 企业稿阿米巴 失败
  9. HDU 1789 Doing Homework again(馋)
  10. Linux安装SNMP