一转眼工做也有几年的时间了,一直想沉下心来,再回过头来从新系统的学习一遍 Android。因此就有了这个读书笔记。俗话说温故而知新,下面就请你们再跟着我系统的学习一篇 Android 吧!html
这一系列主要参考 Android 入门经典----《第一行代码》android
默认学习者会简单的 Java 语法!Android 方面彻底从零开始!跟着我系统的学习吧!面试
2003 年 10 月,Andy Rubin 等人一块儿创办了 Android 公司。2005 年 8 月 Google 收购了这家公司。数据库
Android 从面试以来到如今已经发布了二十多个版本了。在这几年的发展过程当中。谷歌为 Android 王国创建了一个完整的生态系统。手机厂商、开发者、用户之间相互依存,共同推动着 Android 的蓬勃发展。编程
从开发者角度,去了解这个操做系统。api
为了让你可以更好的理解 Android 系统是如何工做的,咱们先来看一下它的系统架构。大体可分四层架构:Linux 内核层、系统运行库层、应用框架层、应用层。浏览器
1.Linux 内核层安全
Android 系统是基于 Linux 内核的,这一层为 Android 设备的各类硬件提供了底层的驱动,好比:显示驱动、音频驱动、照相机驱动、蓝牙驱动、WiFi 驱动、电源管理等。网络
主要是一些底层驱动架构
2.系统运行库层
这一层经过一些 C/C++ 库来为 Android 系统提供了主要的特征支持。如 SQLite 库提供了数据库的支持、OpenGL|ES 库提供了 3D绘图支持,Webkit 库提供了浏览器内核的支持等。
一样这一层还有 Android 运行时库。主要提供了一些核心库,可以使开发者使用 Java 语言来编写 Android 应用。Android 运行时库还包含了 Dalvik 虚拟机(5.0 系统以后改成了 ART 运行环境),它使得每个 Android 应用均可以运行在独立的进程中,而且拥有一个本身的 Dalvik 虚拟机示例。相比 Java 虚拟机。Dalvik 虚拟机是专门为移动设备定制的,针对手机内存、CPU 性能有限等状况做了优化处理。
一些经过 C/C++ 编写的库,还有支持咱们使用 Java 开发的核心库和进程运行的虚拟机
3.应用框架层
主要提供了构建应用程序时用到的各类 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者也可使用这些 API 来构建咱们本身的应用程序。
4.应用层
全部安装在手机上的应用程序就是属于这一层了。
最新架构
Linux 内核
Android 平台的基础是 Linux 内核。例如,Android Runtime 须要依靠 Linux 内核来执行底层功能,例如线程和底层内存管理
使用 Linux 内核可让 Android 利用主要安全功能,而且容许设备制造商为著名的内核开发硬件驱动程序。
硬件抽象层(HAL)
提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每一个模块都为特定类型的硬件组件实现一个界面。例如相机或蓝牙模块。当框架 API 要求访问硬件时,Android 系统为该硬件组件加载库模块。
Android Runtime
对于运行 Android 5.0 或者更高设备,每一个应用都在其本身的进程中运行,而且有本身的 Android Runtime 示例。ART 编写为经过执行 DEX 文件在低内存设备上运行的多个虚拟机。DEX 文件是一种专门为 Android 设计的字节码格式,通过优化,使用内存不多。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其能够在 Android 平台上运行。
ART 的部分主要功能:
预先(AOT)和即时(JIT)编译
优化垃圾回收(GC)
更好的调试支持,包括专用采样分析器、详细的诊断异常、崩溃报告
还包含了一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能。
原生 C/C++ 库
许多核心 Android 系统组件和服务(例如 ART 和 HAL)是构建自原生代码的,须要用 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 来向应用显示其中的部分原始库的功能。例如:经过 Android 框架 的 Java OpenGL API 访问 OpenGL ES,以支持应用中绘制和操做 2D 和 3D图形。
若是开发的是须要 C 或 C++ 代码的应用,可使用 Android NDK 直接从原生代码访问某些原平生台库。
Java API 框架
您可经过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 造成建立 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括如下组件和服务:
丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
通知管理器,可以让全部应用在状态栏中显示自定义提醒
Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
内容提供程序,可以让应用访问其余应用(例如“联系人”应用)中的数据或者共享其本身的数据
开发者能够彻底访问 Android 系统应用使用的框架 API。
系统应用
2008 年 9 月,Google 正式发布了 Android 1.0 系统。
2011 年 2 月,发布了 Android 3.0 系统,专门为平板电脑设计的,比较失败。
2011 年 10 月 Android 4.0 ,这个版本再也不对手机和平板进行差别化区分。
2014 年 Google I/O 大会上,推出了改动最大的 Android 5.0 系统。使用 ART 运行环境代替了 Dalvik 虚拟机,大大提高了应用的运行速度,提出了 Material Design 概念。还推出了 Android Wear、Android Auto、Android TV 系统。从而进军可穿戴设备、汽车、电视等领域。
2015 年 Google I/O 大会,推出 6.0 加入运行时权限功能。
2016 年 Google I/O 大会上推出 7.0 系统 ,加入多窗口模式
1. 四大组件
Activity、Server、Broadcast Receiver、Content Provider
Activity:应用程序的门面。
Server:默默的在后头运行
Broadcast Receiver 运行你的应用接受来自各处的广播消息,好比:电话、短信等,一样咱们的应用也能够向外部发送广播消息。
Content Provider 应用程序之间共享数据提供了可能。好比读取系统电话簿中的联系人。
2. 丰富的系统控件
系统提供了丰富的系统控件,使咱们轻松的编写漂亮的界面。固然咱们也能够本身定义控件。
3. SQLite 数据库
系统自带了轻量级、运算速度快的嵌入式关系型数据库,支持标准的 SQL 语句,还能够经过 Android 封装好的 API 进行操做。
4. 强大的多媒体
提供了丰富的多媒体服务。如:音乐、视频、录音、拍照、闹铃。等等,这一切咱们均可以在程序中经过代码来进行控制。
5. 地理位置定位
使用内置的 GPS 就能够定位到本身的位置
持续更新......