从java web 转到android有一段时间了,虽然根据以前的功底,完成一些简单的android应用已经不成问题了。

但是,没有经过系统的学习过android,始终感觉自己开发的时候“底气不足”。

阅读了部分android的开发文档,android中最重要的几个组件即:activity,service,content provider, broadcast,intent。

这些组件学习的时候都很好理解,但是一旦牵扯混合的时候总感觉有点犯迷糊。一切的根源就在于Intent,因为Intent是连接其他组件的重要且唯一的工具。

android,把每个apk都当做一个单独的进程处理。进程之间的通信也就十分的重要了。

把android的进程通信分为两种:进程之间,和进程之内的。

进程之内的比较简单,通常都是用 Explicit intents 实现。

而进程之间的通信,需要是用Implicit intents进行实现。

(当然,如果进程内部,你使用Implicit intents也可以)

通过Intent,去启动另一个activity ,service 或者发送一个broadcast。

当intent进行匹配activity,service或者broadcast的时候,就会发生一些情况。比如:你的intent 匹配了好多个,android怎么选择呢?

如果是activity,系统会弹出一个选择画面。如果是broadcast,所有的匹配项都会执行。如果是多个service呢?

由于对最后一种的疑惑,所以就借用搜索引擎学习了一番。

下面这个片文章将的非常好,有兴趣的同学可以去看看。

http://blog.csdn.net/homebei2/article/details/6205380?reload    点击打开链接

当然这篇文章也有不足之处;

一个Intent对应多种匹配结果的处理说明
一个intent有多个可匹配的处理组件,系统如何处理?
分响应消息的组件类型:
1)如果是service那么这些service都可以启动并处理消息。
2)如果是Activity则会弹出一个对话框让用户进行选择。

当一个intent有多个匹配结果的时候(进程之间的消息传递):

1)如果是activity,会弹出一个对话框让用户选择。

2)如果是service,那么这些service都会被启动,但是执行处理响应的只有一个,执行哪个,是系统自行解决的(测试的结果是哪个先安装执行哪个)

http://stackoverflow.com/questions/8381324/two-service-with-the-same-intent-filter  点击打开链接

3)如果是broadcast,那么所有的匹配结果都会被处理

进程之间能共享和传输数(intent能传输参数,但是它的主要功能不应该在这上面):

1)content provider

2)使用aidl service

content provider 的实现方法个人感觉不难。

aidl学习的时候有点慢,这里推荐一篇文章:http://blog.csdn.net/jyfllzy/article/details/6299678  点击打开链接

本人做的demo也分享给大家 http://download.csdn.net/detail/qiushibaiyi/5092725 点击打开链接

android 进程通信相关推荐

  1. 大话android 进程通信之AIDL

    上一篇的service涉及到进程通信问题,主要解决办法是通过 messenger来发送消息,这也是Google推荐的进程通信方式,比较简单易懂嘛~~,messenger底层也是通过binder来实现的 ...

  2. android进程通信6,[Android]你不知道的Android进程化(6)--进程通信Andromeda框架

    近来看到爱奇艺发布了多进程的架构框架Andromeda.研究一下其多进程的通信方式. 具体github地址 通过此框架的初步分析 1.通过grade插件完善AndroidManifest.xml配置文 ...

  3. [Android]进程通信Andromeda框架

    作者:苍王 时间:2018.6.1 以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章. [Android]如何做一个崩溃率少于千分之三噶应用app--章节列表 组件化群1已 ...

  4. [Android]你不知道的Android进程化(4)--进程通信AIDL框架

    Google爸爸,听说要将一些插件化hook系统的变量属性禁用,Android P之后很可能将会不再有插件化.热更新.主题变换.资源加固等骚操作.试图hook,你将会看到 NoSuchFieldExc ...

  5. Android跨进程通信Binder机制与AIDL实例

    文章目录 进程通信 1.1 进程空间划分 1.2 跨进程通信IPC 1.3 Linux跨进程通信 1.4 Android进程通信 Binder跨进程通信 2.1 Binder简介 2.2 Binder ...

  6. Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    1.ContentProvider简单介绍 在Android中有些数据(如通讯录.音频.视频文件等)是要供非常多应用程序使用的.为了更好地对外提供数据,Android系统给我们提供了Content P ...

  7. Android的跨进程通信

    Android系统的跨进程简介 为什么不能直接跨进程通信? 为了安全考虑,应用之间的内存是无法互相访问的,各自的数据都存在于自身的内存区域内. 如何跨进程通信? 要想跨进程通信,就要找到一个大家都能访 ...

  8. Android跨进程通信一 Messenger

    实现客户端与服务端之间的交互 说明:         Messenger是信使的意思,从它的名字就可以了解到它充当着信差的角色.Android通过它实现跨进程通信,主要有客户端信使与服务端信使两种角色 ...

  9. Android 跨进程通信大总结

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/111553746 本文出自[赵彦军的博客] 文章目录 1.Android进程 2.修 ...

  10. android四个组件的跨进程通信

    Android四大组件(Activity,service,broadcast,Content Provider)跨进程通信相信在android项目中进程用到,此处将一一做以说明以及总结. 1.简括: ...

最新文章

  1. 你需要知道的20个常用的Python技巧
  2. Zookeeper分布式一致性原理(五):Zookeeper-Java-API
  3. 归并排序的基本原理及实现
  4. 【WebRTC---入门篇】(三)WebRTC运行机制
  5. 【转】Kotlin 新版来了,支持跨平台!
  6. 爱奇艺数据中台建设组合拳:日志投递、统一数仓、大数据平台
  7. 微软这次开源的是 Windows 计算器
  8. java 字节乱码_Android/Java 字节读取出现乱码问题
  9. opsforlist 存在贼覆盖_RedisTemplate集合使用说明-opsForList(二)
  10. 计算二叉树的叶子结点个数_C++数据结构二叉树统计总结点个数,叶子结点个数,单分支结点个数,双分支结点个数。...
  11. 【python利用url下载文件】
  12. 高斯克吕格投影 python2.x 版本
  13. android 去广告浏览器,Adblock Browser(去广告浏览器) V1.3.1 安卓版
  14. anbmcmdn 上下文无关文法_词法分析 | 上下文无关文法和推导
  15. 用拉格朗日插值法,牛顿插值和分段线性插值计算近似值
  16. STM32理论 —— 综述、GPIO
  17. 大数据专业学校课程安排 (仅供参考)
  18. 计算机文化基础形考作业,(精华版)国家开放大学电大专科《计算机文化基础》网络课形考任务6作业及答案(2页)-原创力文档...
  19. 亚马逊开店有什么优势?红利期过了吗?
  20. linux snat mac 桥,关于SNAT在bridge中不生效的问题

热门文章

  1. 业务员如何听懂采购要吃回扣的暗语或者动作?
  2. c++随笔——隐藏窗口
  3. [转]【总结】clc和clear命令的使用
  4. 如何把很多照片拼成一张照片_把很多小照片拼成一张大照片是怎么做的?
  5. 人工智能、机器学习、神经网络和深度学习的发展历程(下)
  6. jdk8官方下载路径
  7. 神经网络前向传播和反向传播算法(作业4)
  8. 大型网站技术架构-《大型网站技术架构:核心原理与案例分析》读书笔记
  9. 程序员交流地必备技能:【怎么让外行理解陌生地东西?】由简喻难(用熟悉的事物形容不熟悉的事物、用来打比方的事物,相似点要直观、通过比喻产生美感、创造概念,浓缩某方面的认知)
  10. Microsoft Visual Studio 2013/2015/2017 官方原版 ISO 镜像中文版下载