Android的IPC
一、什么是Android的IPC? IPC的使用场合?
1、IPC是Inter-Process Communication的缩写,含义是进程间通信或跨进程通信,指的是两个进程间进行数据交换的过程。
2、只有面对多进程的场景下,才需要考虑进程间通信(IPC)
(1)多进程情况分两种:
a、一个应用因为某些原因需要采取多进程模式来实现。
比如:有些模块由于某些特殊原因需要运行在单独的进程中,又或者为了加大一个应用可使用的内存所以需要通过多进程来获取多份内存空间。
b、当前应用需要向其他应用获取数据,由于是两个应用,所以必须采用跨进程的方式来获取所需的数据
(2)使用多进程带来的问题
a、静态成员和单例模式完全失效:不是同一块内存
b、线程同步机制完全失效:不是同一块内存
c、SharedPreferences的可靠性下降:不支持两个进程同时去执行写操作
d、Application会多次创建
3、IPC基础概念介绍,主要包含三方面内容:Serializable接口、Parcelable接口以及Binder
(1)Serializable:是Java提供的一个序列化空接口,为对象提供标准的序列化和反序列化操作。
想让对象实现序列化,只需实现Serializable接口并声明一个serialVersionUID即可,该serialVersionUID对序列化不是必需的,但对反序列化过程会产生影响。
(2)Parcelable:是Android中的序列化方式
(3)Binder:是Android的一个类,它实现了IBinder接口,主要用在Service中,包括AIDL和Messager,Messager的底层其实是AIDL。
从IPC角度讲,Binder是Andorid中的一种跨进程通讯方式
从Android Frameword角度讲,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等等)和相应的ManagerService的桥梁
从Android应用层面讲,Binder是客户端和服务端进行通信的媒介,当bindService的时候,服务端会返回一个包含服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或数据,这里的服务指普通服务和基于AIDL服务
备注:
《1》Serializable和Parcelable接口的使用场合?
Serializable和Parcelable接口可以完成对象的序列化过程,当需要通过Intent和Binder传输数据时就需要使用Serializable或Parcelable接口
《2》Serializable和Parcelable接口二者如何选取?
Serializable是java中的序列化接口,使用简单但开销大,序列化和反序列化过程需要大量I/O操作;
Parcelable是Android中的序列化接口,使用麻烦但效率高,主要用在内存序列化上,将对象序列化到存储设备中或将对象序列化后通过网络传输;在这两者情况下建议使用Serializable
二、什么是线程?什么是进程?
按照操作系统中的描述,线程是CPU调度的最小单位,且是一种有限的系统资源;
进程指一个执行单元,在PC和移动设备上指一个程序或者一个应用
注:一个进程包含多个线程,因此进程和线程是包含和被包含的关系
三、什么是ANR?造成ANR的原因?如何解决?
1、ANR(Application Not Responding)即应用无响应
2、一个进程需要执行大量耗时的任务,如果把这些任务放在主线程(UI线程)去执行就会造成界面无法响应,严重影响客户体验
3、解决这个问题就需要用到线程,把耗时的任务放到线程中即可
Android的IPC相关推荐
- Android Binder IPC机制
之前有很多人问过我TaintDroid的内容,所以一点点吧涉及的思路整理一下. 今天又看了一遍,确实需要很多的技术支持以及扎实的功底,不管是Java的还是Android,从系统底层一直到顶层,涉及的知 ...
- 范例解析:学习Android的IPC主板模式
一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...
- android主板接口定义,范例解析:学习Android的IPC主板模式
一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...
- Android随笔-IPC
概述 IPC全程Inter-Process Communication,跨进程通信,指的是两个进程之间进行数据交换的过程.IPC并不是Android独有的,每一个操作系统需要有相应的IPC机制,比如W ...
- android AIDL IPC深入分析
深入分析AIDL原理 博客分类: Android 在上一篇文章(Service使用方式)中,介绍了Android进程间通信(IPC)的使用,并给出了一个示例.但并没有深入分析aidl是怎样可以做到进程 ...
- Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互.不同的操作系统都有他们自己的一套IPC机制.例如在Linux操作系统中可以通过管道. ...
- Android的IPC机制Binder
第一部分 Binder的组成 1.1 驱动程序部分驱动程序的部分在以下的文件夹中: Java代码 kernel/include/linux/binder.h kernel/drivers/andr ...
- 深入理解 Android 的 IPC 机制--------Binder
在android中,,应用程序虽然是以独立的进程来运行的,但相互之间还是需要通信..比如,,我们的应用程序 和后台服务往往会运行不同的进程当中,,各自有这独立内存地址空间,,,但是又要彼此互相合作,, ...
- 02.Android之IPC机制问题
目录介绍 2.0.0.1 什么是Binder?为什么要使用Binder?Binder中是如何进行线程管理的?总结binder讲的是什么? 2.0.0.2 Android中进程和线程的关系?什么是IPC ...
最新文章
- 多个ViewPager引发的Fragment未初始化
- 不知道对象的传递那些参数
- ANSYS Motion 2020 R2中文版
- ProEssentials实时三维图表控件
- activiti5.22 springboot 流程引擎 实战全过程
- c++ string 回文串_第33期:上海自来水来自海上,回文字符串验证!
- 越来越多优秀的老员工辞职,怎么办?
- 带进度条的Flash多文件上传面板(SwfUploadPanel) (转载)
- Linux --- 常用命令
- 20个短视频素材网站
- 《Android框架揭秘》——2.5节应用程序Framework源码级别调试
- 服装行业SCM供应链管理平台优化资源配置效率,促进企业提质增效
- mysql按逗号拼接起来_MySql逗号拼接字符串查询的两种方法
- Windows MongoDB下载 安装以及配置(一条龙到底)
- 软考-网络工程师-下午考试知识点
- Linux From Scratch docker lfs build 在Fedora 31 Linux上自己动手从源码一步一步编译出一个x86_64架构LFS Linux操作系统
- iPhone加码“独立王国” 有可能成摆设?
- C++11Lambda表达式捕获变量(Capturing the Variable)与本地变量(Local Variable)
- OFD文件转PDF怎么转换?教你一键转换方法
- chrome打开html文件显示不全,谷歌浏览器显示不全怎么办_chrome浏览器打开的网页显示不完整如何解决-win7之家...
热门文章
- 数学类笔试题(四分位数、数据规约和协方差)
- keras提取网络中间层输出、中间层特征
- 编写一个完整的矩阵向量乘法的MPI编程代码
- DCDC电源工作啸叫
- ffmpeg和opencv 播放视频文件并显示
- 从Daemons到finalize timed out after 10 seconds
- Android分应用层、应用框架层、系统应用层、核心层
- java 编程式事务管理_spring-编程式事务管理
- linux取证工具,【FastIR Collector Linux---让Linux取证更简单】
- [概念] 风险识别工具 - 影响图(Influence Diagram)