android进程间通信

转载来自:http://www.binkery.com/

进程和线程

进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。
线程就好比车间里的工人。一个进程可以包括多个线程。
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

跨进程通信

Activity

实例化一个 Intent,然后 startActivity ,比如发送微博,你在你的 APP 里,通过 Intent 把数据发送给了微博客户端,微博客户端发完微博又回到了你的 APP,这个时候你需要 startActivityForResult 和 onActivityResult 就解决了你的进程和微博客户端进程的通信。

Service

(1)一般情况下,Service 和应用同在一个进程下,并且是主线程的。叫本地Service。
(2)remote service。如果一个 Service 是 remote service 的话,那么这个 Service 就会运行在一个独立的进程里。
既然跨进程了,就需要了解一个东西,叫 AIDL , Android Interface Definition Language。它是一个定义语言,说白了,你可以理解它是一个中间的桥梁,进程A得知道进程B的接口(也就是方法),才可以调用,传递参数,获取返回值。

Content Provider

有时候你又需要对外提供数据,如果说电话本,短信等等,其他的应用都可以获取到的需要用Content Provider。Content Provider 其实也是对 SQLite 的另外一种封装而已,它提供了另外一种数据的访问方式。

Broadcast

广播一个消息(其实也是一个Intent),然后其他的应用程序可以接收到这个广播(当然得注册监听这个广播)。
广播虽然好用,但是有些局限性,通过 Intent 来携带数据,一般不允许携带复杂的数据,特别是一些大对象。另外,广播的频率也是一个问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值