关于Android进程间通信的理解

一、一般认为Android进程间通信方式有四种,其实就是四大组件的进程间通信方式。

这种网上将得非常清楚了:如一下文章

https://blog.csdn.net/baidu_29094221/article/details/78852998

只贴简单内容在这里

由于应用程序之间不能共享内存。在不同应用程序之间交互数据(跨进程通讯),在Android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service:

  1. Activity可以跨进程调用其他应用程序的Activity;
  2. ContentProvider可以跨进程访问其他应用程序中的数据(以Cursor对象形式返回), 
    当然,也可以对其他应用程序的数据进行增、删、改操作;
  3. Broadcast可以向android系统中所有应用程序发送广播, 
    而需要跨进程通讯的应用程序可以监听这些广播;
  4. Service和Content Provider类似,也可以访问其他应用程序中的数据, 
    但不同的是,ContentProvider返回的是Cursor对象, 
    而Service返回的是Java对象,这种可以跨进程通讯的服务叫AIDL服务。

二、但是作为一个系统源码开发者,如果认为Android只有这四种跨进程间通信的方式,那就太肤浅了。起码还有以下几种

1、属性SystemProperties,该属性可以在不同的进程,不同的java文件中使用,

而且在C/C++代码中也有对应的访问接口,可谓非常之方便。不过还是要注意如果不是全局,还是尽量不要使用,因为存储属性

的容量有限,而且必须系统应用才能使用该特性。至于原理,就是Android开辟了一块特定的区域用于存储该值,这里就不详细阐述了

2、SettingsProvider:

SettingProvider用于存储和管理一些系统的默认值,并给其他模块提供了访问和修改的接口,Settings中的值大部分就是用这种方式进行存储和修改的。

3、Binder是Android进行进程间通信最底层的支持,AIDL其实也是用的也是Binder,系统那些Service和Manager之间也是用的Binder,Binder对Java层的使用是面向对象的,非常方便,对Binder属性的也可以直接使用Binder进行通信

学习Binder推荐Gityuan文章  http://gityuan.com/2015/10/31/binder-prepare/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值