随笔 - 262  文章 - 0  评论 - 5  阅读 - 20万

android 跨进程通信

1.什么是进程。

android 进程可以简单理解为各个app。

但一个app可以有多个进程,(1)使用process属性来开启一个进程。常见推送sdk中使用(2)lunix命令开启进程:fork();

详细了解进程,需要深入理解Lunix操作系统的原理,水平有限不多说。推荐https://www.jianshu.com/p/43309f0dc669

2.重点:进程间通信。

不同进程在各自的内存空间工作,一个进程不能访问另一个进程的内存。虽然可以在一个面目里写的代码。

进程间通信简单的讲就是一个app与另一个app进行信息交换。(其实不是这么简单,先这么理解)

3.进程通信方法:

通过第三方(比如系统):Intent (意图),向系统提交意图,系统分配给对应处理程序并返回结果。比如取图片,调相机,打电话,下载文件等。broadcast广播 最直观了,一个发一个接。内容服务系统本地数据库ContentProvider 。通过服务器:c-s-c结构。

直接通信:AIDL 进程通信接口。Messager (对aidl的封装)重点aidl直接使用是线程不安全的,而messager是线程安全的。使用网络通信协议通信比如:socket 。

 

4.基本就这些了。明确一些概念

IPC:即进程间通信;
匿名共享内存(Anonymous Shared Memory):其作用之一即通过Binder进程间通信机制来实现进程间的内存共享。 
Binder:Binder是对IPC的具体实行,是IPC的一种具体实现.其本质也是调用系统底层的共享内存实现.
AIDL:进程间的通信,速度快(系统底层直接是共享内存),性能稳,效率高,一般进程间通信就用它. AIDL是Binder机制向外提供的接口,目的就是为了方便对Binder的使用;
消息(Messager):Messenger本质也是AIDL,只是进行了封装,开发的时候不用再写.aidl文件;
广播(BroadcastReceiver):只要注册了广播,都能收到,有点范围广,缺点速度慢必须在一定时间完成处理操作;
ContentProvider:暴露app的数据访问接口,让其他应该访问app数据.
Intent:Intent是最高层级的封装,实质是封装了对Binder的使用;

posted on   wp7ers  阅读(582)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示