Adnroid体系与系统架构

简介: Adnroid体系与系统架构

Google生态系统


Android系统架构


Android系统架构的经典示意图


20151215010028907.png

它将Android大致分为四层:

  1. Linux Kernel 内核层
  2. 库和运行时 (Libraries + Android RunTime)
  3. FrameWork层
  4. 应用层 Applications


Android的体系架构鼓励系统组件的重用,共享组件间的数据,并且定义组件间的访问权限控制。可以说这些层次结构既是相互独立又是相互关联的。


20151216002708011.png

Linux层


**Linux层,**Andorid最底层最核心的部分,**包含了Android系统的核心服务,包括硬件驱动、进程



- Dalvik and ART

Dalvik包含了一整套的Adnroid运行环境虚拟机,每个App都会分配Dalvik虚拟机来确保相互之间不受干扰,并保持独立。 Dalvik的特点是运行时编译。

ART: 在Android 5.X的版本开始,ART模式已经取代了Dalvik,ART采用的是安装时编译,以后运行时就不用编译了。

当让了,对在其虚拟机环境中运行的大部分APP来讲,他们都运行着相同的代码。

- Application Framework


20151216000336250.png


应用框架层


Framework层为我们程序开发提供了非常方便的API,

我们可以称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方法和操作系统的相互通信。


简单的介绍下Framework层部分框架的功能:


Activity Manager

用来管理应用程序生命周期并提供常用的导航回退功能。


Window Manager

提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。


Content Providers

使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。


View System

可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。


Notification Manager

使得应用程序可以在状态栏中显示自定义的提示信息。


Package Manager

提供对系统的安装包的访问。包括安装、卸载应用,查询permission相关信息,查询Application相关信息等。


Telephony Manager

主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。


Resource Manager

提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

Location Manager

提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。


XMPP

可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。

………等等

  • Standard libraries


20151216002155305.png

  • 这里包含的是Adnroid中的一些标准库。
  • Application
    What Android Is

20151216002802391.png


20151216002819292.png


Android App 组件框架


四大组件: Activity 、Service、ContentProvider、 BroadCastReciever .


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


Intent

Activity作为人机交换的第一界面,负责向用户展示信息和处理结果,而这些信息的来源可以通过资源获取,也可以通过ContentProvider来获取其他应用的信息,或者Service从后台获取,当然了也可以是通BroadCastReciever获取到的广播信息。

组件和组件之间通过Intent通信、传递信息、交换数据,形成了各自独立又紧密联系的关系。


应用运行上下问对象


context

Android系统的上下文对象,即在Context中。

Activity Service Application 都继承自Context。

Android应用程序辉仔如下所示的时间点创建应用上下文Context。

- 创建Application

- 创建Activity

- 创建Application


从中我们可以看出,创建Context的时机就是在创建Context实现类的时候。


当应用程序第一次运行时,Android系统都会创建一个Application对象,同时创建Application Context对象,所有的组件都共同拥有这样一个Context对象,这个应用上下文对象贯穿整个应用进程的生命周期,为应用全局提供了功能和环境支持。


而创建Activity和Service时,系统也会为他们提供运行时的上下文环境,即创建Activity实例、Service实例的Context对象。


所以,我们可用直接在Activity中直接通过this的方式获取Context对象,而在匿名内部类中,就必须使用 XXXActivity.this的方式才可以获取Context对象。


当然 你也可以通过getApplicationContext()方法获取整个APP的Context对象,但是通过getApplicationContext()获取到的Context是整个应用的上下问对象,这个与某个组件的上下文对象在某些时候还是有区别的。


Adnroid系统源代码目录和系统目录


源码目录啥的暂时略过吧,目前也钻研不懂,等回头有精力了再来膜拜。


相关文章
|
1月前
|
存储 分布式计算 关系型数据库
架构/技术框架调研
本文介绍了微服务间事务处理、调用、大数据处理、分库分表、大文本存储及数据缓存的最优解决方案。重点讨论了Seata、Dubbo、Hadoop生态系统、MyCat、ShardingSphere、对象存储服务和Redis等技术,提供了详细的原理、应用场景和优缺点分析。
|
3月前
x86体系架构学习
x86体系架构学习
|
7月前
|
存储 SQL 搜索推荐
业务系统架构实践总结
作者从2015年起至2022年,在业务平台(结算、订购、资金)、集团财务平台(应收应付、账务核算、财资、财务分析、预算)、本地生活财务平台(发票、结算、预算、核算、稽核)所经历的业务系统研发实践的一个总结。
|
存储 架构师
企业级业务架构设计:方法论与实践 学习笔记
最近在项目中涉及到这一领域,也借着这个契机做一次对企业级业务架构设计的深入学习。
719 0
|
消息中间件 Cloud Native 架构师
如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始
如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始
225 0
|
算法
【系统架构】系统架构因何而来
【系统架构】系统架构因何而来
85 0
|
存储 机器学习/深度学习 缓存
Tinder 系统架构
Tinder 系统架构
874 0
Tinder 系统架构
|
数据采集 安全 数据管理
业务架构与技术架构方法论
架构本质、什么是架构
1327 0