Android100问之什么是Android

时间:2024-03-27 07:51:08

说到做到,从今天起我将整理自己认为与在网上找的一些资料可能会大家会在面试时候被问到的一些在前Android的面试题目,我把这一系列的文章叫《Android100问》。当然本人是一个小菜鸟有一些东西也是借鉴网上,加上自己的理解与整理,有些东西讲得不对的话只希望大家指出,就让我们走在Android的开发之路上且行且歌吧,同时也为了我们都能一样的找到一份好的Android的工作,最终实现我们的程序员的梦想!

这一系列的《Android100问》我将以对话的形式整理出来,希望能符合大家的口味,有些东西说得不是很对的话就希望大家指出更正,谢谢。

故事主人公简介:千夜(一个正在迷茫的实习生)。鬼王(一个在外面开发特别牛的导师却特别喜欢教学所以选择在学校兼职,是与小千夜相处得非常好的类似兄弟的一个老师,因为时常上课讲鬼故事吓唬女生,所以大家习惯的叫他鬼王)

第一问:什么Android

鬼王:嘿,千夜,发呆呢,想啥呢?

千夜:这不,大三了哎,大家都忙着实习了,可我的工作都还没着落,唉,鬼王,你知道不?我现在就像是一只苍蝇一样,前途一片茫然呀。

鬼王:怎么了呀?你不是专业学得还可以不?有啥好迷茫的呀?

千夜:你不知道,最近我都在想自己自学Android,一个人自学真难,而且像我这种没经验的没做过什么项目的,学成这样,出去后都不知道自己能找着什么样的工作。

鬼王:呵呵,原来是这事呀,Android呀,我也时常关注这个智能手机操作系统,感觉它前景挺好的,对他也还算了解,前段时间,也有点接触过,说不上精通,也略知一二吧。

千夜:真的假的呀?那给你我讲到底什么是Android呀。我对它都还不是有很深入的了解认识。

鬼王:嗯,好吧,我给你讲解下吧。像我们使用的电脑的时候我们用的就是Windows系统,Android它也是一个系统。但是对于官方API我记得它是这么描述的:Android是一个针对于移动设备的软件栈,它包括操作系统,中间件和关键应用。AndroidSDK提供了在Android平台使用Java编程语言进行开发应用程序的必要的工具和API。

千夜:哦哦,也就是它不仅仅不是一个操作系统了,他也有中间件和关键应用。哦,懂了一点点,那它有什么特点呢,最近看它挺火的。

鬼王:具体Android的优点有挺多的。

1、应用程序框架 使组件可重用并且可替换

2、Dalvik虚拟机 为移动设备优化

3、集成的浏览器 基于开源的WebKit引擎

4、优化的图形处理 以定制的2D图形库和基于OpenGLES 1.0规范的3D图形(可选的硬件加速)为基础

5、 SQLite 结构化数据的存储

6、媒体支持 常见的音视频格式,还是图形格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)

7、GSM电话 (基于硬件)

8、蓝牙,EDGE,3G和WiFi (基于硬件)

9、照相机,GPS,指南针,加速感应器 (基于硬件)

10、丰富的开发环境 包括设备模拟器,调试工具,内存和性能分析工具和用于Eclipse IDE的插件

千夜:哇,这特点还挺多的,鬼王,给你看张图,这张图又是啥意思呢?

Android100问之什么是Android

鬼王:这个图呀,呵呵,好理解呀,我就从上到下讲解吧。

最上层叫Application故名思意就是应用程序,由图我们可以看到这一层包括一些什么时候E-mail客户端、SMS短消息程序、日历、地图等等。这些程序都是用Java编写的,所以你可以很好很快的去学习Android

下面一层叫Application Framework翻译出来就是叫应用程序框架。由图我们可以看到这里面主要包括以下的东西

再下一面层是Android程序库(Libraries),,Android包括了一套C/C++库,这套库被Android系统的各个组件使用。这些能力通过Android应用框架展示给应用开发人员。一些核心库的如下:

1、系统C库 - 一个针对于标准C系统库(libc)的BSD派生的实现,针对于嵌入式Linux设备进行了调整

2、媒体库 - 基于PacketVideo的的OpenCore;该库支持回放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG和PNG格式

3、Surface管理器 - 管理访问显示子系统和从多个程序中无缝合成二维和三维图形层

4、LibWebCore - 一个流行的Web浏览器引擎,它对Android浏览器和嵌入式Web视图具有良好的支持

5、SGL - 底层的2D图形引擎。

6、3D库 - 基于OpenGL ES 1.0 API的一个实现;该库使用硬件3D加速(如果可用)或包含高度优化的3D软件光栅扫描器

7、FreeType – 用于位图和矢量字体渲染。

8、SQLite - 一个提供给所有的应用程序使用的强大的,并且轻量级的关系型数据库引擎

再看右边(Android Runtime)叫Android的运行时。Android包括一组核心库,这组核心库提供了用于Java编程语言的核心库可用的大多数功能。 每个Android应用都运行在它自己的进程里,并依附一个单独的Dalvik虚拟机实例。一个设备可以高效地运行多个Dalvik虚拟机。 Dalvik虚拟机执行Dalvik可执行文件(.dex)的格式,此格式做了最小的内存占用优化。Dalvik虚拟机是基于寄存器的,并运行由dx工具将Java语言编译器编译完的class文件转换为的dex格式文件。

Dalvik虚拟机的底层功能依赖Linux内核,例如线程和底层的内存管理。

最下一面一层不是Linux内核,Android的核心系统服务依赖于Linux内核。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

现在对这张图有理解了吗?

千夜:这张图是不是这样的,最上面层叫Appliactio层,下来是(Application Frameword)应用程序框架。再下来就是Andriod的库,然后右边是Android的运行时,最下面是Linux内核

鬼王:嗯,的确是这样,现在对Android是不是有一定的了解了呢?好了,还有什么疑惑以后再问我吧。

千夜:嗯嗯,谢谢鬼王哈。嘿嘿,以后还有疑惑再找你