
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
提及“android架构设计,android架构图”,先从谷歌公开的体系结构图上开始吧,本着拿来主义的原则,直接贴图。开始就从了解体系架构入手吧。
从图上可以看出一共有四层结构,从下到上分别为:
1-----Linux 内核层
2-----中间件层
3-----应用程序框架层
4-----应用程序层
谷歌公开的体系结构图
下面咱们依次分层细谈吧,先把模块打散,然后再组装吧,自己画的,虽然丑点吧,毕竟是自己的,ok,就这样了,这玩意也没有必要,也不必过下美图秀秀。
一、系统分层架构图,简化版的
二、Linux内核层
1--------------------
从下到上来吧,Android 核心内核使用了Linux 2.6的内核,为了便于商用,那帮家伙将Linux中的GUN协议部分进行取代。里面集成了调用实体设备的驱动程序,用来驱动真实实体设备。并暴漏接口调用给上一层,即中间件层。
三、中间件层
2--------------------
中间件层--从体系架构图中可以看出,该层主要的功能分成了两块:运行库和运行时。并封装了相应的接口调用给应用程序框架层
=================运行库
系统运行库层:当我们使用Android应用框架时,Android系统会通过一些C/C++库,来支持对我们使用的各个组件,使其能更好滴为开发者服务,比如里面列举一些主要的库:
①---Bionic系统C库-----C语言标准库,系统最底层的库,C库通过Linux系统来调用;
②---多媒体库(MedioFrameword)-----Android系统多媒体库,基于PacketVideo OpenCORE,该库支持多种常用的音频、视频格式的回放和录制以及一些图片,比如:MPEG4、MP3、AAC、AMR、JPG、PNG等
③---SGL-----2D图形引擎库
④---SSL-----位于TVP/IP协议与各种应用层协议之间,为数据通讯提供支持。
⑤---OpenGL | ES -----3D效果的支持
⑥---SQLite-----轻量级关系型数据库
⑦---Webkit-----Web浏览器引擎
⑧---FreeType-----位图(Bitmap) 及 矢量(Vector)
===============运行时
运行时里面最重要的应该算是虚拟机吧。Dalvik是google自己设计的用于Android平台的Java虚拟机(.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统)这是在android4.4之前的版本了。android 4.4及以后的版本,谷歌直接祭出了ART(Android Runtime),用来取代Dalvik,运行模式确实提高了不少,优化了性能和流畅性。
比较一下二者的不同吧:
------Dalvik:应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖累应用的运行效率。
------ART:应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用(这个过程叫做预编译[AOT,Ahead-Of-Time]),这样的话,应用的启动(首次)和执行都会变得更加快速。
反正就是ART比Dalvik强就是了。
四、应用框架层
3--------------------
应用程序框架层---封装了开发应用所需要的核心API框架,提供了丰富多彩的组件,这样简化了程序开发的架构设计,但也必须遵守其框架的开发原则,开发自主性上被限制住了。该层封装了SDK,提供了API给上一层调用使用。
SDK中内置了一些对象,其中最重要的组件有四个:Activities、Intents、Services以及Content Providers。
1--------------
Activities 活动:
一个活动就是一个用户界面。一个应用程序可以定义一个或者多个活动,每个活动都能够保存和恢复自身的状态。
2--------------
Intents 意向:
Intent是描述一个特定活动的一种机制,比如“选取照片”、“拨打电话”等具体的动作。在Android机制中所有的东西都是通过Intents完成的,这样开发者有机会替代或重用大量的组件。
比如有一个“发送邮件”的Intent,当你应用程序需要发送邮件时可以激活这个Intent。开发者甚至可以重新编写一个新的邮件应用程序,并注册为活动以处理这个Intent代替标准的邮件应用程序。
那么,其他的应用程序就可以使用新编写应用程序来发送邮件了。
3--------------
Services 服务:
一个服务Service就是运行在后台,没有用户直接交互的任务(与Unix daemon类似)。
比如要做一个音乐播放器,可能会被另一个活动激活,但音乐是需要作为背景音乐播放,那么这种程序就可以考虑作为一种服务Service。然后别的活动可以来操作这个播放器。Android中内置了很多服务,可以方便滴使用API进行访问。
4--------------
Content Providers 内容提供者:
一个内容提供者content provider就是由自定义的API封装读写操作的一套数据。Content Provider是不同应用程序之间共享全局数据最好的方式。比如,Google提供了联系人的Content Provider,包括姓名、地址、电话等所有信息在内的联系方式能够被所有应用程序使用。
五、应用程序
4--------------------
应用程序层,开发丰富多彩的应用程序。
先总结成这个样子吧,自己也是初学,慢慢加深理解吧!
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!