android 进程通信

从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 点击打开链接

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值