从0系统学 Android--1.1认识 Android
一转眼工作也有几年的时间了,一直想沉下心来,再回过头来重新系统的学习一遍 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 就可以定位到自己的位置
持续更新......
转载于:https://juejin.im/post/5d3083b1f265da1bcc197a78
从0系统学 Android--1.1认识 Android相关推荐
- android 发送广播_从0系统学Android--5.2 发送广播
从0系统学Android--52 发送广播 本系列文章目录:更多精品文章分类 本系列持续更新中-. 初级阶段内容参考<第一行代码> 5.3 发送自定义广播 前面已经学习了如何接受广播了,下 ...
- android 5.0 刷机教程,一加手机怎么升级安卓5.0系统?一加手机刷Android 5.0教程
谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,日一加手机官方 ...
- android 权限作用说明书,AndroidAcp 一句话搞定,简化 Android 6.0 系统复杂的权限操作 @codeKK Android开源站...
Acp 为 Android check permission 缩写,此库简化 Android 6.0 系统复杂的权限操作而编写. 特点 支持批量权限申请,不需要重写 onRequestPermissi ...
- Android10.0 系统解析(02)——搭建Android源代码编译调试环境
1.前言 Android的编译环境作为深入学习Android的基础,不可或缺,能够完整下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步.Android环境搭建比较繁琐 ...
- android activity启动模式_从0系统学Android--2.5Activity启动模式
本系列文章目录:更多精品文章分类 本系列持续更新中-. Activity 的启动模式一共有四种,分别是:standard.singleTop.singleTask.singleInstance .在实 ...
- activity 生命周期_从0系统学Android-2.4 Activity 的生命周期
本系列文章,参考<第一行代码>,作为个人笔记 更多内容:更多精品文章分类 本系列持续更新中-. 2.4 Activity 的生命周期 掌握 Activity 的生命周期对于开发者来说是非常 ...
- android 8.0 调系统拍照_Android通知栏微技巧,8.0系统中通知栏的适配
为什么要进行通知栏适配? 不得不说,通知栏真是一个让人又爱又恨的东西. 通知栏是Android系统原创的一个功能,虽说乔布斯一直认为Android系统是彻彻底底抄袭iOS的一个产品,但是通知栏确实是A ...
- Android通知栏微技巧,8.0系统中通知栏的适配
转载请注明出处:https://blog.csdn.net/guolin_blog/article/details/79854070 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 ...
- 深入解析android 5.0系统 pdf,深入解析Android 5.0系统 刘超 中文pdf_源雷技术空间
资源名称:深入解析Android 5.0系统 刘超 中文pdf <深入解析Android 5.0系统>详细剖析了最新Android 5.0 系统主要框架的原理和具体实现.本书共24章,覆盖 ...
最新文章
- 富士康裁员六万,试图用机器人扭转赤字?
- 浏览器到响应页面的全过程
- python调用dll时路径问题_IDEA 使用 JNA 时,DLL 文件路径问题
- 主流大数据技术全体系参数与搭建与后台代码工程框架的编写(百分之70)
- 计算机应用基础专业自我鉴定范文毕业生,中专生计算机专业自我鉴定(7页)-原创力文档...
- Arduino--超声波
- java sound 多线程同一音频文件_Java在编程语言中占据何等优势?
- CentOS7安装oracle11G数据库
- 【转】Django 数据库的操作
- Mask-RCNN(2)Resnet101
- java给链表赋值_Java链表操作代码
- 工业照明节能减碳难?致远ZWS云平台有妙招
- 最新搜狗收录提交工具分享
- cad线加粗怎么设置_cad2016怎么把线加粗
- react-native Animated简单动画制作
- 基于PySpark的航天日志分析(SQL分析)
- 古月居ROS入门21讲笔记
- 【IoT】硬件PM系列(三):硬件产品经理需要掌握的定价策略
- avdd-supply and vdd_io-supply两个属性解析调用regulator_get(dev, “vdd_io“)
- 第5章 Redis新类型
热门文章
- tar解压出错:gzip: stdin: unexpected end of file的解决
- 关于python读取文件的规则
- flume采集最简demo
- C#接口(Interface)理解
- mysql如何定义消耗资源多的sql语句_如何查找消耗资源较大的SQL
- 曼彻斯特解密_曼彻斯特编码解码方法与流程
- matlab中sum函数
- CVPR 2020 HAN:《Hypergraph Attention Networks for Multimodal Learning》论文笔记
- 约数研究pascal程序
- Codeforces 1188 题解