1.Android 系统架构

android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层,如下图所示:

2.application应用程序层

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处

3.application framework应用程序框架层

该层是Android应用开发的基础,提供API给写application应用程序的人调用,常用到的类库如下:

  • 活动管理器(Activity Manager):    表示当前显示的界面窗口,用来管理各个应用程序生命周期,为所有程序的窗口提供交互的接口.
  • 窗口管理器(Window Manager):  对窗口程序进行管理
  • 内容提供者(Content Provider):   提供一个应用程序访问另一个应用程序数据的功能,实现应用间共享数据
  • 视图系统(View System):   创建应用所需的组件
  • 包管理器(Package Manager):  管理应用安装、卸载,应用版本号、版本名,查询相关权限等功能
  • 电话管理器(Telephony Manager):  提供设备电话相关功能
  • 资源管理器(Resource Manager):  提供各种非代码资源供应用程序使用,如字符串,颜色,图片,音频等
  • 位置管理器(Location Manager):  提供位置服务
  • 通知管理器(Notification Manager):  使应用可以在系统状态栏中显示通知消息
  • XMPP服务 :  Google在线即时交流软件中一个通用的进程,提供后台推送服务

而四大组件又分为:

  • activity活动 :  当前显示的界面窗口, 一个Activity通常就是一个单独的屏幕,当然也可以有多个Activity组成.然后上面的控件也可以获取用户事件,来做出相应操作.
  • service服务 :  用于后台完成用户操作,主要用于周期性的后台监控和后台服务,比如在后台下载东西
  • BroadCast Receiver广播接收器 :  用来接收各处APP发出的广播,但是多数的广播是系统发起的.比如来电来信等.
  • Content Provider内容提供器 :  通过它可以将自己的数据让所有的应用程序访问到,比如访问电话簿联系人,主要用来共享数据

4.Libraries系统库

系统库大部分由C/C++编写,提供的功能给Android应用程序框架来调用

5. Android runtime 运行库

包含了Core Library和Dalvik虚拟机.

Core Library: 提供JAVA编程语言核心库的大多数功能

Dalvik虚拟机(dvm): 每个Java程序都离不开Java虚拟机, Android系统也实现了自己的一个类似JVM但是更适合嵌入式平台的虚拟机——Dalvik。Dalvik的功能等同于JVM,为Android平台上的Java代码提供了运行环境.唯一不同的是dvm执行的是.dex文件,jvm执行的是.class文件.

过程: android程序编译完之后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件和.dex文件等打包成.apk文件,如下图所示:

dvm的优点在于:基于寄存器存取,而非虚拟栈,可以根据硬件实现最大的优化,比较适合移动设备。

5.1 android 4.4开始, DVM被替换

由于DVM安装后的APP是字节码,所以每次打开APP的时候,都会去把字节码翻译为机器码,导致APP运行效率降低,用户体验很差.

所以在 Android 4.4开始,ART(Android Runtime)虚拟机发布,用来替换 Dalvik 虚拟机,Android 4.4 默认采用 DVM,但可以选择ART(如下图所示)。在 Android 5.0 开始默认使用 ART,DVM 从此被淘汰,并且ART 支持 64 位并兼容 32 位 CPU,而DVM只支持32 位 CPU.

ART优点:安装应用程序时会进行一次 AOT(ahead of time compilation, 预编译),将字节码编译成机器码并存储在本地,这样APP每次运行时就不需要执行编译了,APP运行效率大大提升,耗电量也会降低.

ART缺点: 应用程序的安装时间变长,并且安装后的存储空间占用多一些(存储有机器码的原因)

6.linux内核

用来运行应用程序,并包含各种驱动,向应用层提供调用。

下章学习: 2.Android-sdk目录介绍、ADT使用介绍、创建helloworld

1.Android-入门之系统架构介绍的更多相关文章

  1. Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触

    第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...

  2. Android群英传笔记——第一章:Android体系与系统架构

    Android群英传笔记--第一章:Android体系与系统架构 图片都是摘抄自网络 今天确实挺忙的,不过把第一章的笔记做一下还是可以的,嘿嘿 1.1 Google的生态圈 还是得从Android的起 ...

  3. Android特性与系统架构

    Android特性与系统架构 一.Android特性 • 应用程序框架支持组件的重用与替换 • Dalvik 虚拟机专为移动设备优化 • 集成的浏览器基于开源的WebKit 引擎 • 优化的图形库包括 ...

  4. Android之路-------浅淡Android历史、系统架构与开发特色

    前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...

  5. 吴裕雄--天生自然Android开发学习:android 背景相关与系统架构分析

    1.Android背景与当前的状况 Android系统是由Andy Rubin创建的,后来被Google收购了:最早的版本是:Android 1.1版本 而现在最新的版本是今年5.28,Google ...

  6. 第2-1-1章 FastDFS分布式文件服务背景及系统架构介绍

    目录 1 背景 1.1 为什么需要分布式文件服务 1.1.1 单机时代 1.1.2 独立文件服务器 1.1.3 分布式文件系统 1.2 什么是FastDFS 2 系统架构 2.1 Tracker集群 ...

  7. 第一章 Android体系与系统架构

    1. Dalvik 和 ART(Android Runtime) 在Dalvik中应用好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.在ART中应用好比是一辆组装好了的自行车, ...

  8. Mysql Server系统架构介绍

    总的来说,MySQL可以看成是二层架构. 第一层我们通常叫做SQL Layer,在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql解析,执行计划优化,query ...

  9. Android四款系统架构工具

    开发者若想开发出一款高质量的应用,一款功能强大的开发工具想必是不可或缺的.开发工具简化了应用的开发流程,也能使开发者在应用开发本身投入更多的精力.本文就为大家带来4款实用的Android应用架构工具. ...

随机推荐

  1. Python爬虫之Selenium的常用方法

    1.单个元素的选取 find_element_by_id      通过标签属性Id查找元素 find_element_by_name      通过标签属性name查找元素 find_element ...

  2. HTML,CSS,Javascript,PHP在网站结构中扮演的“角色”

    ①HTML   在网站结构中使用来,展示网页内容的: ②CSS   在网站结构中使用来,美化页面,如字体颜色大小等: ③Javascript(JS)   在网站结构中使用来,让页面动起来,提高浏览体验 ...

  3. vue e.path 移动端兼容

    作用 e.path 用来获取点击元素及以上所有父元素的一个数组 问题 当在移动端会有获取不到e.path的问题 不兼容 解决 let path = event.path || (event.compo ...

  4. Spring 框架基础(05):事务管理机制,和实现方式

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring事务管理 1.基础描述 Spring事务管理的本质就是封装了数据库对事务支持的操作,使用JDBC的事务管理机制,就是利用jav ...

  5. centos6安装pxc

    Percona XtraDB Cluster是一种高可用性解决方案,可帮助企业避免停机和中断. Percona XtraDB Cluster具有以下MySQL群集优势: • 具有成本效益的HA和MyS ...

  6. 【在 Nervos CKB 上做开发】Nervos CKB 脚本编程简介[3]:自定义代币

    原文作者:Xuejie 原文链接:https://xuejie.space/2019_09_06_introduction_to_ckb_script_programming_udt/ Nervos ...

  7. ThinkPHP5——安装验证码和使用

    1.使用composer安装验证码 首先要安装composer,大部分“composer require topthink/think-captcha”命令无法运行或者提示不是内部文件或可执行命令,都 ...

  8. 使用Python为中秋节绘制一块美味的月饼【华为云技术分享】

    每逢佳节… 对于在外的游子,每逢佳节倍思亲.而对于996ICU的苦逼程序猿们,最期待的莫过于各种节假日能把自己丢在床上好好休息一下了.这几天各公司都陆续开始发中秋礼品了.朋友圈各种秀高颜值的月饼,所以 ...

  9. 华为鲁勇:5G+云+AI三大核心引擎将驱动广州数字经济发展

    [摘要] 华为云将携手广州政企,全面释放 5G+云+AI新动能,推动广州步入高质量发展新阶段. [中国,广州] 广州是一座多样化的城市,在历史上被誉为千年的商都,现在,广州也在持续的开放.融合.与时俱 ...

  10. Java修炼——基于TCP协议的Socket编程_双向通信_实现模拟用户登录

    首先我们需要客户端和服务器端. 服务器端需要:1.创建ServerSocket对象.2.监听客户端的请求数据.3.获取输入流(对象流)即用户在客户端所发过来的信息.                  ...