《Android程序设计》一3.6 Android应用的运行时环境

简介: 本节书摘来自华章出版社《Android程序设计》一 书中的第3章,第3.6节,作者:G. Blake Meike, Masumi Nakamura,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 Android应用的运行时环境

Android独特的应用组件架构在某种程度上是Android多处理并发的产物。为了使该环境能够适应多个供应商的多种应用,信任每个供应商只需要很少的工作,Android执行Dalvik VM的多个实例,每个任务执行一个实例。在3.7节及后续的章节中,我们将探讨组件生命周期如何促进Android提高应用堆内的垃圾收集工作,以及如何促进多个堆之间的内存回收策略。
由于这种简单而又可靠的多处理方式,Android必须高效地把内存划分成多个堆。每个堆相对较小,这样内存可以支持多个应用同时运行。在每个堆中,由于有了组件生命周期而使得不使用的组件,尤其是当前不活跃的用户界面组件,在堆的空间紧张时能够执行垃圾回收,而在需要时能够重新获取。因此,由这种方式又引入了以数据库为中心的数据模型,其中大部分数据都是内在持久的,关于这一点本书后面将会更加详细地讨论,尤其是第11章。

3.6.1 Dalvik虚拟机

Android的多路处理利用了虚拟机的多进程和多实例,需要虚拟机的每个实例都能有效利用空间。这是通过组件生命周期来完成的,它使得对象某种程度上能够通过虚拟机本身执行垃圾回收和重新创建。Android通过Dalvik虚拟机运行特地为Android开发的字节码系统,该字节码系统名为dex。dex字节码的空间效率几乎是Java字节码的两倍,对于每个进程,从根本上看,在内存消耗上仅为Java类的一半。Android系统还使用写时复制(copy-on-write)的内存管理方式来实现同一个Dalvik可执行文件的多个实例之间的堆内存的共享。

3.6.2 Zygote:派生新的进程

当每个新的进程启动虚拟机的一个新的实例时,如果每次都加载所有必要的基类,则效率会很低。由于Android把每个应用放在独立的进程中,它会利用底层Linux操作系统的fork操作,通过模板进程生成新的进程,该进程在启动新的虚拟机实例时能够达到最优状态。该模板进程的名字就是Zygote。Zygote模板进程是Dalvik虚拟机的一个实例,它包含一组预加载类及Zygote进程的其他状态,这些进程通过fork操作生成Zygote的
副本。

3.6.3 沙盒:进程和用户

Android的安全在很大程度上依赖于Linux操作系统层的安全机制,尤其对于进程和用户级别的边界限制。由于Android面向的是个人设备,即个人持有和使用的设备,Android巧妙地利用了Linux内在的多用户支持特性:为每个应用供应商创建一个单独的用户。这意味着每个应用以不同的用户权限运行(除了那些来自同一个供应商的)。在默认情况下,一个应用所拥有的文件,其他应用是无法访问的。
这就类似于在Windows系统上,你以自己的用户名运行Word程序,而以同事的用户名运行Web浏览器。无论要切换查看Word还是Web浏览器,都需要首先退出,然后切换用户才能查看,而无法同时查看。Android允许一个登录的手机用户查看以不同的Linux级别用户运行的多个应用。
这种方式带来的直接影响是由于每个应用在自己的“独立运行空间(silo)”中执行,因而安全性得到了提高。
桌面操作系统通常不会如此全面地考虑应用的沙盒特征——一旦安装了某个应用,用户的所有数据都会信任该应用。Android设计师们设想的是来自众多供应商的很多小的应用,这些供应商并非都是完全可信的。因此,一个应用无法直接访问其他应用的数据。

相关文章
|
7月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
245 3
|
12月前
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
2711 160
|
12月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
595 64
|
7月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
610 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
12月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
2230 62
|
12月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
841 61
|
9月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
1065 4
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
874 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1900 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
432 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex

热门文章

最新文章