1.1安卓的发展与简介

       安卓并不是Google创造的,而是由Android公司所创造,公司于2003年在美国加州成立,该公司的创始人是Andy Rubin,该公司2005年由Google收购注资,并组建开放手机联盟。

       2007年11月5日,Android 1.0操作系统发布,当时并没有赢得广泛的市场支持。2009年5月,Google发布了Android1.5,这个版本功能强大,吸引了大量开发者的目光。目前,安卓已经成为一个重要的手机操作系统,市场占有率远超其他系统。

1.2 Android系统架构

一、Android体系及系统架构_第1张图片

1.2.1 Linux

       Linux层,是安卓最底层、最核心的部分。当我们打开手机Setting,选择About Phone选项,这一选项所显示的内核版本,就是我们所使用的Linux内核的版本。Linux层包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统,等等。

1.2.2 Dalvik与ART

       Dalvik包含了一整套的安卓运行环境虚拟机,每个app都会分配Dalvik虚拟机来保证互相之间不受干扰,并保持独立。它的特点是运行时编译。打个比方,就像是买了一辆折叠自行车,平时是折叠的,只有骑的时候才需要组装起来用。在Android5.X版本开始,ART模式已经取代了Dalvik,ART采用的是安装时就进行编译,以后运行时就不需要进行编译了。这就好比买了一辆组装好的自行车,直接就可以骑车。当然,对在其虚拟机环境中运行的大部分app来说,它们都是运行着同样的代码。

1.2.3 Framework

       Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用。
       我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。
       (1)用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。
       (2)用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

这 2种方式的结合达到了Java方法和操作系统的相互通信。
一、Android体系及系统架构_第2张图片

1.2.4 Standard libraries

       Standard Libraries的详细版,这里包含的是Android中的一些标准库,所谓标准,就是开发者在开源环境中可以使用的开发库
一、Android体系及系统架构_第3张图片

1.2.5 Application

       如下两图分别表示了使用NDK开发和Java开发的App的主要构成。可以看出,不管那种App,它们都有Android Manifest 文件,Dalvik Classes,Resource Bundle这几个东西,相信解压过Apk的朋友应该注意到了,这些就是我们解压Apk后的文件。
一、Android体系及系统架构_第4张图片一、Android体系及系统架构_第5张图片
       对于开发者来说,与Android系统最直接的接触就是SDK,应用开发者应当关注每个版本的SDK修改,从而提高应用的兼容性,如果站在Android设计者的角度上来看整个Android的架构,设计者希望Android的架构层能够起到承上启下的功能,让应用的各个组件之间解耦,并通过框架来进行统一的调度,管理。

1.3 Android App组件架构

       在应用层,Android的App组件架构,痛就是我们所说的四大组件,指的是Activity,BroadCastReciver,ContentProvider和Service,它们是构成一个AndroidApp的最基本元素。

1.3.1 Android四大组件如何协同工作

       Activity作为人机交互的第一界面,负责向用户展示信息和处理结果,而这些信息的来源,可以是通过资源获取,也可以是通过Conten Provider 来获取其他应用的信息,或是Service从后台计算,下载,处理的结果,当然也可以是通过BroadCast Reciver获取到的广播信息。同时,Android系统还提供了要给信使——Intent,作为信息传递的载体。组件与组件之间通过Intent来通信,传递信息,交换数据,正式通过这样要给方式,四大组件形成了各自独立而又紧密联系的关系,让整个Android系统“活”了起来。

1.3.2 应用运行上下文对象

       Android系统中的上下文对象,即在Context中,为我们封装了这样一个“语境”。Activity,Service,Application都是继承自Context。

Android应用程序会在如下所示的几个时间点创建上下文Context。
(1) 创建Application
(2)创建Activity
(3) 创建Service

       不难发现,创建Context的时机就是创建Context的实现类的时候。当应用程序第一次启动时,Android系统都会创建一个Application对象,同时创建Application Conetext,所有的组件都共同拥有这个Context对象,这个应用上下文对象贯穿了整个应用进程的生命周期,为应用全局提供了功能和环境支持。
       而创建Activity和Service组件时,系统也会给他们提供运行时的上下文环境,即创建Activity实例,Service实例的Context对象。所以在Activity中获取Context对象时,可以直接使用this,而在匿名内部类中,就必须指定XXXActivity.this 才可以获得该Activity的Context对象。
      当然也可以通过getApplicationContext()方法来获取整个App的Context,但是通过getApplicationContext()方法获得的是整个应用的上下文引用,这与某个组件的上下文应用,在某些时候还有有区别的。

1.4 Android系统目录和Android Studio文件目录

       在Android手机里,系统的目录结构与源代码目录结构还是有所不同的,我们通过ADB连接Android设备,通过Linux的ls命令查看Android系统的根目录,其中/system和/data是开发者非常关心的两个目录:
一、Android体系及系统架构_第6张图片

Android Studio环境下的文件目录结构:
一、Android体系及系统架构_第7张图片

更多相关文章

  1. Android组件及UI框架大全
  2. Android学习心得之二——Android系统架构图及简单的系统架构介绍
  3. Android获取系统的硬件信息、系统版本以及如何检测ROM类型
  4. Android系统概述
  5. Android四大组件之Service---本地服务、远程服务和IntentService
  6. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  7. android 中的广播 ,系统广播和自定义广播
  8. Android系统源码目录解析

随机推荐

  1. Android(安卓)RadioGroup和RadioButton控
  2. android P限制http连接
  3. Android如何实现图片轮播
  4. android 版本更新 同时清除旧版本数据
  5. Android(安卓)Permission大全1.0最终版本
  6. android sdk manager不显示更新,只显示已
  7. Android Handler(一)
  8. Android标题栏、状态栏图标文字颜色及背
  9. Android(安卓)5.X新特性-Material Design
  10. Android应用程序自启动,已用于售卖机开机