从0系统学 Android--1.1认识 Android

一转眼工做也有几年的时间了,一直想沉下心来,再回过头来从新系统的学习一遍 Android。因此就有了这个读书笔记。俗话说温故而知新,下面就请你们再跟着我系统的学习一篇 Android 吧!html

声明

这一系列主要参考 Android 入门经典----《第一行代码》android

默认学习者会简单的 Java 语法!Android 方面彻底从零开始!跟着我系统的学习吧!面试

认识 Android

2003 年 10 月,Andy Rubin 等人一块儿创办了 Android 公司。2005 年 8 月 Google 收购了这家公司。数据库

1.1 了解 Android 全貌

Android 从面试以来到如今已经发布了二十多个版本了。在这几年的发展过程当中。谷歌为 Android 王国创建了一个完整的生态系统。手机厂商、开发者、用户之间相互依存,共同推动着 Android 的蓬勃发展。编程

从开发者角度,去了解这个操做系统。api

1.1.1 Android 系统架构

为了让你可以更好的理解 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.应用层

全部安装在手机上的应用程序就是属于这一层了。

架构.jpg

最新架构

  • 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

  • 系统应用

最新架构.png

1.1.2 Android 已发布的版本

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.1.3 Android 应用开发特点

1. 四大组件

Activity、Server、Broadcast Receiver、Content Provider

Activity:应用程序的门面。

Server:默默的在后头运行

Broadcast Receiver 运行你的应用接受来自各处的广播消息,好比:电话、短信等,一样咱们的应用也能够向外部发送广播消息。

Content Provider 应用程序之间共享数据提供了可能。好比读取系统电话簿中的联系人。

2. 丰富的系统控件

系统提供了丰富的系统控件,使咱们轻松的编写漂亮的界面。固然咱们也能够本身定义控件。

3. SQLite 数据库

系统自带了轻量级、运算速度快的嵌入式关系型数据库,支持标准的 SQL 语句,还能够经过 Android 封装好的 API 进行操做。

4. 强大的多媒体

提供了丰富的多媒体服务。如:音乐、视频、录音、拍照、闹铃。等等,这一切咱们均可以在程序中经过代码来进行控制。

5. 地理位置定位

使用内置的 GPS 就能够定位到本身的位置

持续更新......

更多资料
相关文章
相关标签/搜索