您的位置:首页 > 移动开发 > Android开发

Android开发学习(1)基本概念

2017-08-01 11:30 274 查看
移动设备的火爆,不用过多笔墨,我们已经处于移动办公的时代,未来pc生存的空间,可能越来越小,对于移动应用开发的学习,显得越来越迫在眉睫,凭借着这几年的积累,经验,预计应该容易理解和入门些。

入门一个语言,时刻不忘恩师的教诲,任何事情,在做之前,要想到,这不是一个孤立的事件,必然和自身以前的事件有千丝万缕的联系,有了这些联系,我们在接受一个所谓意义上“新事件”的时候,先要“同化”,找到相同点,然后在实行【N+1】原则,循序渐进积累不同点,最后让这个事件在思维导图中和千千万万个其他事件产生联系,那么“新事件”就转化成了“老事件”。

架构

学习安卓,毕竟兴奋的一个特大号共同点【Java】,安卓是java语言开发,这个省略了很多新语言熟悉学习的过程。二安卓的架构也足够简单清晰,帮助我们更快速的进行熟悉和了解:

Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。

Android主要应用于ARM平台,但不仅限于ARM;



从上图中可以看出,Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下:

应用程序层

Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。

对比java-web:类似于我们的web界面以及我们自己写的代码。

应用程序框架层

Activity Manager(活动管理器)

管理各个应用程序生命周期以及通常的导航回退功能

Window Manager(窗口管理器)

管理所有的窗口程序

Content Provider(内容提供器)

使得不同应用程序之间存取或者分享数据

View System(视图系统)

构建应用程序的基本组件

Notification Manager(通告管理器)

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

-Package Manager(包管理器)

Android系统内的程序管理

Telephony Manager(电话管理器)

管理所有的移动设备功能

Resource Manager(资源管理器)

提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

Location Manager(位置管理器)

提供位置服务

XMPP Service(XMPP服务)

提供Google Talk服务

对比java-web:类似于框架提供的各种服务,spring,quartz等。

系统运行库层

从图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时,分别介绍如下:

系统库

系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如下几个:

Surface Manager:

执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。

Media Framework:

多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。

SQLite:

小型的关系型数据库引擎

OpenGL|ES:

根据OpenGL ES 1.0API标准实现的3D绘图函数库

FreeType:

提供点阵字与向量字的描绘与显示

WebKit:

一套网页浏览器的软件引擎

SGL:

底层的2D图形渲染引擎

SSL:

在Andorid上通信过程中实现握手

Libc:

从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制

Android运行时

Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。

核心库

核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。

Dalvik虚拟机

Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一 个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化 以及支持多个虚拟机的特点。需要注意的是,不同于J2me,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格式的中间码。

对比java-web:类似于src.jar以及其他我们应用的jdk框架。

Linux内核层

Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。

对比java-web:类似于war包运行的linux系统

总结:

在安卓开发的过程中,初期我们更多接触的是应用层的开发,其他的都是调用关系,也就是“黑箱子”,这就大大减少了开发的难度,得力于java程序员的人数优势,安卓应用市场的丰富就自然是这个结果,本篇文章先介绍这么多,下骗我们开始构建我们自己的开发环境。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: