Android核心功能模块介绍

    以下是Android的各个重要模块,从具体的功能模块了解Android,就可以知道Android具体可以做些什么

    一、界面框架

    Android界面框架最有特色的就是资源和布局体系,通过完善的控件库和简明的接口,可以快速搭建界面。

    Android的每个交互界面都由一棵控件树构成,控件树上的控件皆派生自android.view.View类,非子节点的控件都派生自android.view.ViewGroup类称之为容器控件。控件都受父控件树的管理,父控件负责子控件的丈量和绘制,并向子控件发送交互事件。其中比较特殊的就是布局控件,这是一种自容器控件,和其他控件不同其主要任务是排列内部的子控件。每个控件都有焦点,可视性,可用性,标示,背景等控件属性,为了获得用户和控件的的交互事件,会为控件添加各种交互事件监听对象。

    Android部署了完整的应用资源体系,将和界面相关的元素:界面布局、文字信息、尺寸信息、颜色和图像,都从代码中剥离出来由资源目录、XML资源文件和数据资源文件共同构成。因为XML文件比逻辑化的代码更适合描述界面这样的结构化概念。而资源目录结构可以解决设备的屏幕特征以及外部设备的兼容性问题。

    二、数据存储

    数据存储有两种方式进行本地存储以及上传到远端服务器进行云存储。

    本地数据存储的最大特点是数据的私有化,每个应用的配置信息和数据库文件等数据都是其私有的,其他应用没有权限读写。保证了应用数据的安全性。如果需要将数据共享给其他应用一个策略是构造一个数据源组件(content provider),其他应用的组件可以通过数据源组件的接口访问它所提供的数据源组件接口访问它所提供的数据,另一个常用的方法将数据放入扩展存储设备中可以被所有应用共同访问。

    Android对本地数据的存储,可以有多种文件格式:普通文件,设置文件,数据库等。设置文件是专门存储应用设置信息的,依照键值对的形式进行保存。Android的数据库依靠Sqlite的支持,提供了更便捷的读写类库支持,开发者可以使用SQL或者结构化的数据对象对数据库进行增删改查等操作。

    实际环境中数据存储最重要的是策略合适,针对不同数据需要综合性能,简便性,可靠性等多种因素考虑。

    三、网络通信

    Android系统会负责底层网络的连接管理,开发者可以直接通过Http或socket与远端服务器连接。Android不仅支持点到端的连接还支持点到点的连接(比如蓝牙和NFC),蓝牙则主要依托于开源项目BlueZ。Android内部内嵌了基于Webkit实现的浏览器控件。在进行对互联网功能的开发需要考虑节约流量、电量、连接稳定性等。

    四、地理信息

    地理信息和网络通信密切想关,因为对于地理信息的获取可以通过网络利用基站信息进行定位,还可以基于GPS定位,基站定位精度要比GPS低一些,通常在数十米到数百米之间,但基站定位的适应能力应该更强,不会受周围建筑的影响。

    五、图形和多媒体处理

    Android支持MPEG4、MP3、AAC、AMR、JPG、PNG、GIF等等格式的图像音频。

    (1)Android的音频处理依赖于开源的OpenCORE支持:这是基于C/C++的音视频处理库,在核心类库层进行多种格式文件的编解码及流媒体处理

    (2)Android的图像处理依赖于开源的Skia支持:帮助进行读写图像数据,进行位图到PNG、JPG格式图像的编解码

    (3)Android对2D图形的使用主要由android.graphics.drawable包来实现:该包中的类都是android.graphics.drawable.Drawable基类的具体实现,大部分2D图像及动画都可以通过其来处理,支持图形图像,纯色渐变等静态效果的绘制,还支持局部或全局的缩放、拉伸和旋转等操作。

    (4)Android在3d处理使用了OpenGLES:可以通过android.opengl包来使用OpenGL进行开发,也可以抛开封装直接使用Android NDK提供的OpenGLES接口进行开发。

    六、外部设备

    每个移动设备都需要支持各种外部设备,Android可以兼容各类设备:键盘、触摸屏、摄像头等。还支持各种类型的感应器:加速度感应器、压力传感器、温度传感器、光学传感器等等。通过android.hardware.SensorManager可以获得设备上所有的传感器信息并获得数据。

    以上核心功能将Android打造成了一个开放的平台,可以运行在各种设备上,因为可以兼容不同的硬件、屏幕尺寸、外设等等,针对不同的设备环境,分别定制统一界面的资源文件放入特定的资源目录,这样就可以在运行时寻找最符合当前设备的资源文件。Android在高度组件化下的各个应用只有明确的组件边界,而不再有明确的进程边界和应用边界,应用的一个功能是很多应用的若干组件共同完成。

猜你喜欢

转载自blog.csdn.net/ZytheMoon/article/details/102152506