开发者社区> 紫雾凌寒> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Android 学习】IPC机制(一)Android IPC简介及多进程模式

简介: 版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51233367 这几篇博客都是,最近看任玉刚的《Android 开发艺术与探索》第二章的读书笔记,看这章看了好几遍,总算是对Android IPC机制有了一定的理解。
+关注继续查看
版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51233367
这几篇博客都是,最近看任玉刚的《Android 开发艺术与探索》第二章的读书笔记,看这章看了好几遍,总算是对Android IPC机制有了一定的理解。

一、什么是Android  IPC

   IPC 是Inter-Process Communication 的缩写,含义是进程间通信或者跨进程通信,故名思意:就是指两个进程之间的通信,也就是数据的交换。
这里先普及一个老生常谈的问题:就是什么是进程?进程与线程有什么区别?
进程:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
一个程序至少有一个进程,一个进程至少有一个线程.
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
在Android中主线程也叫UI线程,如果我们将大量的耗时操作放在主线程中去执行,很可能造成ANR(Application Not Responsing)即应用无响应。解决这个问题的办法是将这些耗时操作放在子线程中去执行。
IPC 不是Android 独有的,任何一个操作系统都有IPC,如Windows 的剪切板等。Linux上有命名管道、共享内存和信号量机制。Android IPC通信方式有Bundle、文件共享、Messenger、AIDL、ContentProvider、Socket。还有一个就是
Android 特有的通信方式Binder。

二、Android中的多进程模式

 Android  多进程就是一个Android APP中有多个进程在同时运行,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名,进程是系统分配资源和调度的基本单位,每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制。
开启Android  多进程的方法只有一个,那就是在Androidmanifest.xml文件中添加android:process属性即可。
我们知道不同进程不能共享内存,所以多进程会使运行在不同进程的Android四大组件,只要通过共享内存来共享数据实现通信,都会失效。
主要带来一下几个方面的问题:
静态成员和单例模式完全失效。线程同步机制完全失效。SharedPreferences的可靠性下降。Application会多次创建(Application 多进程相当于应用重启)。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
第一讲Android简介与环境搭建
第一讲Android简介与环境搭建
0 0
Android简介
有关Android的小知识
0 0
Android Studio 简介
Android Studio 是基于 IntelliJ IDEA 的官方 Android 应用开发集成开发环境 (IDE)。除了 IntelliJ 强大的代码编辑器和开发者工具,Android Studio 提供了更多可提高 Android 应用构建效率的功能,例如: • 基于 Gradle 的灵活构建系统 • 快速且功能丰富的模拟器 • 可针对所有 Android 设备进行开发的统一的环境 • Instant Run,可将变更推送到运行中的应用,无需构建新的 APK • 可帮助您构建常用应用功能和导入示例代码的代码模板和 GitHub 集成 • 丰富的测试工具和框架 • 可捕捉性能、可用性
0 0
【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )
【Android 逆向】整体加固脱壳 ( 脱壳点简介 | 修改系统源码进行脱壳 )
0 0
【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )
【Android 逆向】加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )
0 0
【Android 逆向】类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )
【Android 逆向】类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )
0 0
【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
【Android 逆向】GDA 逆向工具安装 ( GDA 下载 | GDA 简介 | 运行 GDA 分析 APK 文件 )
0 0
【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )
【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )
0 0
【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )
【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )
0 0
【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )
【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载