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

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

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

认识 Android

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

1.1 了解 Android 全貌

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

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

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.应用层

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

最新架构

  • 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

  • 系统应用

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 就可以定位到自己的位置

持续更新......

从0系统学 Android--1.1认识 Android的更多相关文章

  1. 从0系统学Android-2.5更多隐式Intent用法

    本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 从0系统学Android-2.5更多隐式Intent用法 上一节中我们学习了通过隐式 Intent 来启动 Act ...

  2. 从0系统学Android--4.1探究碎片

    从0系统学Android--4.1探究碎片 本系列文章目录:更多精品文章分类 本系列持续更新中.... 初级阶段内容参考<第一行代码> 第四章:手机平板要兼顾--探究碎片 平板电脑和手机最 ...

  3. 从0系统学Android--3.7 聊天界面编写

    从0系统学Android--3.7 聊天界面编写 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.7 编写界面的最佳实践 前面学习了那么多 UI 开发的知识,下面来进行实践,做一个美观 ...

  4. 从0系统学Android--3.6 RecyclerView

    从0系统学Android--更强大的滚动控件---RecyclerView 本系列文章目录:更多精品文章分类 本系列持续更新中.... 参考<第一行代码> 首先说明一点昨天发了一篇关于 L ...

  5. 从0系统学Android--3.5 最常用和最难用的控件---ListView

    从0系统学Android-- 3.5 最常用和最难用的控件---ListView 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.5 最常用和最难用的控件---ListView Lis ...

  6. 从0系统学Android--3.2四种基本布局

    从0系统学Android--3.2四种基本布局 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.3 系统控件不够用?创建自定义控件 上一节我们学习了 Android 中的一些常用的控件 ...

  7. 从0系统学Android--3.1编写UI界面

    从0系统学Android--3.1编写UI界面 本系列文章目录:更多精品文章分类 本系列持续更新中.... 界面设计和功能开发同样重要,界面美观的应用程序不仅可以大大增加用户粘性,还能帮我们吸引到更多 ...

  8. 从0系统学Android--2.6 Activity 的最佳实践

    从0系统学Android--2.6 Activity 的最佳实践 本系列文章目录:更多精品文章分类 本系列持续更新中.... 实践中的技巧 2.6.1 知晓当前是在哪个 Activity 这个其实很简 ...

  9. 从0系统学Android--5.2 发送广播

    从0系统学Android--52 发送广播 本系列文章目录:更多精品文章分类 本系列持续更新中.... 初级阶段内容参考<第一行代码> 5.3 发送自定义广播 前面已经学习了如何接受广播了 ...

  10. 从0系统学Android--1.3创建你的第一个 Android 项目

    1.3 创建你的第一个 Android 项目 环境搭建完成后,我们就可以写下我们的第一个项目了. 1.3.1 创建 HelloWorld 项目 在 Android Studio 的欢迎页面点击 Sta ...

随机推荐

  1. 常用类-Excel-使用Aspose.Cells插件

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Xm ...

  2. MacOS~jenkins里解决docker执行权限问题

    一 全局配置项设置 需要添加全局变量项,例如名称docker,路径/usr/local 添加一个jenkinsfile文件,用于运行docker命令 pipeline { agent any tool ...

  3. C#中增量类功能的方式之 继承与扩展

    之前一次公司培训的时候,将它记录下来,https://www.cnblogs.com/AlvinLee/p/10180536.html这个博客上面比较全面. 1.扩展方法 扩展方法是一种特殊的静态方法 ...

  4. 【前端知识体系-NodeJS相关】对NodeJS模块机制的理解

    1. CommonJS模块规范 1.1 模块引用 var math = require('math'); 1.2 模块定义 [!NOTE] 上下文提供exports对象用于导出当前模块的方法和变量,并 ...

  5. go语言设计模式之Concurrency workers pool

    worker.go package main import ( "fmt" "strings" ) type WorkerLauncher interface ...

  6. 使用sessionStorage获取值和设置值

    <body><button id="btn1">设置值</button><button id="btn2">获取 ...

  7. 给那些迷茫的人学习JAVA的一些建议?

    前语:我用了3年的时间,一步一步走到了现在,半途也有了解过其他的技能,也想过要转其他的言语,可是最终仍是坚持下来走Java这条路,希望我的经历能够帮忙到后来的人,要是觉得对你有帮忙的话,能够注重一下和 ...

  8. codeforces 1260C. Infinite Fence (数学or裴蜀定理)

    只需要验证小间隔在大间隔之间有没有连续的k个 设小间隔为a,大间隔为b,那么a在b之间出现的次数在\(\lfloor \frac{b}{a}\rfloor\)或者\(\lfloor \frac{b}{ ...

  9. 要想精通Mybatis?从手写Mybatis框架开始吧!

    1.Mybatis组成 动态SQL Config配置 Mapper配置 2.核心源码分析 Configuration源码解析 SqlSessionFactory源码解析 SqlSession源码解析 ...

  10. 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开

    目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...