一、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. 浪潮服务器开始虚拟化,(浪潮服务器-虚拟化解决方案.ppt
  2. android的 selector 背景选择器和 shape 详解(转)
  3. oracle使用sqlplus创建表空间
  4. 计算机视觉基础:图像处理(上)
  5. 科技论文的几种类型-如何写好科技论文之我见(二)
  6. SGU 275. To xor or not to xor
  7. 使用Lubuntu开发Android应用
  8. java exception 行号_java日志记录错误的文件_方法_行号_报错信息
  9. mysql 与 redis 如何保证数据一致性问题 ?
  10. @async 如何返回list_图解 Await 和 Async
  11. 您应该知道的ES2020中的10个JavaScript新功能
  12. cas3 自定义页面
  13. 【毕业设计】毕业设计选题指南
  14. 2022年MySQL8 OCP最新题库整理,传授有缘人
  15. 细胞生物学-7-叶绿体和线粒体
  16. 用cisco服务器添加html,在接入服务器上配置基本 AAA
  17. 教你如何利用python调用摄像头
  18. 网页源文件代码隐藏的代码(转)
  19. android 生成bks_Android 添加 证书(pem,crt,p12,bks,jks)到 keystore.bks
  20. 亚马逊云科技物联网产业创新峰会与你相聚蓉城

热门文章

  1. Scala入门到精通——第十七节 类型参数(一)
  2. Scala入门到精通——第六节:类和对象(一)
  3. 使用 cert-manager 签发免费证书
  4. Flutter升级到1.12填坑指南
  5. submit与execute区别
  6. Redis高可用原理
  7. 一文让你彻底理解 Java HashMap
  8. linux下工具exfs用法
  9. 王义成:阿里云Redis服务助力游戏行业发展
  10. 利用rsync如何同步单个文件