zoukankan      html  css  js  c++  java
  • <小虾米的android学习之旅1>Android框架

      PS:小虾米大学刚毕业,现在是一个android应用开发者。由于一直在公司做项目时边学边写,最近总感觉好像什么都会点但是什么又不够深入,可能是缺少体系的学习再加上本人记忆力比较差,所以我决定在这里好好的系统的再次记录android的学习过程,打好扎实的基础才是腾飞的关键。本文许多地方是出自他人的blog里的,在这里对这些大牛表示敬意。之后还会陆续更新设计模式,算法,数据结构以及实例项目,希望能持之以恒,也给各位程序员提供一个总结知识的地方。


     

    一.  框架(FrameWork)

    1.什么是框架?
      框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

      框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 android框架就像一个舞台,它提供场地,灯光和音响等各种组件,让你开发的应用在舞台上翩翩起舞。

     

    2.使用框架的优点

    • 领域内的软件结构一致性好; 建立更加开放的系统;
    • 重用代码大大增加,软件生产效率和质量也得到了提高;
    • 软件设计人员要专注于对领域的了解,使需求分析更充分;
    • 存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;
    • 允许采用快速原型技术;
    • 有利于在一个项目内多人协同工作;
    • 大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。

     

    二.  Android框架
    1.Andorid框架图

     

                      图1.1 Android框架图

    如图1.1,整个Android框架可分为5个部分,从底层到上依次为:linux内核层(Linux Kernel),库(Libraries),Android运行环境(Android Runtime),应用框架层(Application Framework),应用层(Applications)。

     

    2.各层简介
    2.1  linux内核层(Linux Kernel):Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。如果你学过计算机网络知道OSI/RM((Open System Interconnection/Reference Model)——开放系统互连参考模型,1983年ISO颁布的网络体系结构标准。从低到高分七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。各层之间相对独立,第N层向N+1层提供服务。),就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。
      Android使用Linux2.6作为操作系统,Linux2.6是一种标准的技术,Linux也是一个开放的操作系统。Android对操作系统的使用包括核心和驱动程序两部分,Android的Linux核心为标准的Linux2.6内核,Android更多的是需要一些与移动设备相关的驱动程序。主要的驱动如下所示:

    • 显示驱动(Display Driver)——常用基于Linux的帧缓冲(Frame Buffer)驱动。
    • 照相机驱动(Camera Driver)——常用基于Linux的v4l(Video for)驱动。
    • 蓝牙驱动(Bluetooth Driver)
    • M-systems Driver
    • Binder IPC驱动——Andoid一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。
    • 键盘驱动(KeyBoard Driver)
    • USB驱动(USB Driver)
    • WiFi驱动(WiFi Driver)——基于IEEE 802.11标准的驱动程序
    • 音频驱动(Audio Driver)——常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。
    • 电源管理(Power Manager)

    
    2.2  库(Libraries):Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:

    • 界面管理(Suface Manager)——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层;
    • 多媒体框架(Media Framework)——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG;从功能上本库一共分为两大部分,一个部分是音频、视频的回放(PlayBack),另一部分是则是音视频的纪录(Recorder)。
    • SQlite——所有应用程序都可以使用的强大而轻量级嵌入式的关系数据库引擎;
    • 图形处理3D库(OpenGL|ES)——本部分提供了对3D的支持,基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅
    • 字体引擎(FreeType)——位图和矢量字体渲染
    • 浏览器(WebKit)——网络浏览器的核心
    • SGL——2D图像引擎
    • 安全套接层(SSL)——即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
    • C库——C语言的标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现

     

    2.3  Andorid运行环境(Android Runtime):包含了一组核心库(Core Libraries)和Dalvik虚拟机(Dalvik Vitual Machine)

    • 核心库(Core Libraries)——提供大部分在Java编程语言核心类库中可用的功能。
    • Dalvik虚拟机(Dalvik Vitual Machine)——每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己 的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。 两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx 是一套工具,可以將 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有時必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。

     
     
     
    2.4  应用框架层(Application Framework):Android的应用程序框架为应用程序层的开发者提供APIs,它实际上是一个应用程序的框架,应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。。由于上层的应用程序是以JAVA构建的,因此本层次提供的首先包含了UI程序中所需要的各种控件:例如: Views (视图组件)包括 lists(列表), grids(栅格), text boxes(文本框), buttons(按钮)等。甚至一个嵌入式的Web浏览器。

    • 活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能
    • 窗口管理器(Window Manager)——管理view在屏幕端的显示
    • 内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据
    • 视图系统(View Systems)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器
    • 通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告
    • 包管理器(Package Manager)——描述了当前安装在设备上的app包的大量相关信息
    • 电话管理器(Telephony Manager)——提供使用电话服务
    • 资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件
    • 定位管理器(Location Manager)——获取地理位置等相关信息
    • XMPP Service——是一种以XML为基础的开放式实时通信协定

     

    2.5  应用层(Applications):Android的应用程序主要是用户界面(User Interface)方面的,通常以JAVA程序编写,其中还可以包含各种资源文件(放置在res目录中)JAVA程序及相关资源经过编译后,将生成一个APK包。Android本身提供了主屏幕(Home),联系人(Contact),电话(Phone),浏览器(Browers)等众多的核心应用。同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。这也是Android开源的巨大潜力的体现。

    
    3. 总结
      Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。


     

  • 相关阅读:
    ElasticSearch 查询语法
    自定义的带tab的可左右滑动的viewpager之二viewpager与fragment不兼容
    QT5 串口收发实例代码
    Communications link failure报错的处理
    mac 环境下mysql 不能删除schema问题的解决办法
    [置顶] How to dump redo log entry?
    pjsip视频通信开发(上层应用)之拨号界面整体界面功能实现
    windows command ftp 中文文件名乱码解决方法
    (字符串的模式匹配4.7.18)POJ 2406 Power Strings(求一个字符串的最小重复串)
    通过程序 VB.Net 或 C# 读取文本文件行数
  • 原文地址:https://www.cnblogs.com/dwj-blog/p/3276937.html
Copyright © 2011-2022 走看看