【进程间通信】Android 进程间通信的几种实现方式

一、整体结构

这里写图片描述

下面将逐一介绍4种通讯方式

二、4种通讯方式

1、Activity

Android内置了许多可供其他程序跨进程访问的Activity,比如跳至打电话页面(指定Action,uri跨进程访问)

    Intent callIntent = new  Intent(Intent.ACTION_CALL, Uri.parse("tel:12345678" );  
    startActivity(callIntent);

与进程内访问不同,跨进程并不需要指定Context对象和Activity的Class对象,而需要指定要访问的Activity的Action(一个字符串),有些Activity还需要指定一个Uri(通过Intent构造方法的第二个参数指定)

2、Content Provider

列子:Android本身提供了很多,如:音频,视屏,联系人信息等等,我们可通过这些Content Provider获取相关信息的列表,这些列表数据将以Cursor对象返回,因此Content Provider返回的数据是二维表形式。

3、Broadcast

广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通。
在应用程序中发送广播比较简单。只需要调用sendBroadcast方法即可。该方法需要一个Intent对象。通过Intent对象可以发送需要广播的数据。

4、AIDL Service

广播有一个缺点,在手机中广播较多时会有明显的延时,甚至有广播发送不成功的情况出现。利用AIDL Servic实现跨进程通信应运而生,
注意普通的Service并不能实现跨进程操作,实际上普通的Service和它所在 的应用处于同一个进程中,而它也不会专门开一条新的线程,因此如果在普通的Service中实现耗时的任务,需要新开线程

要实现跨进程通信,需要借助AIDL(Android Interface Definition Language)。Android中的跨进程服务其实是采用C/S的架构,因而AIDL的目的就是实现通信接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值