Android学习(2):Android系统

来源:互联网 发布:好听好记的网站域名 编辑:程序博客网 时间:2024/04/30 06:35


            Android是一款基于Linux由Google主导的开源移动操作系统平台,从2008年第一款Android手机问世,已经有6年的历史。目前主流手机版本一般是4.0之后的了,而最新版本号是5.0。每一次新版本的发布,都意味着会有一些老的API被Deprecated,同时会开放一些新的API,个人认为对于现在开始学习Android开发的人来说,不需要纠结于兼容4.0以前的版本,因为已经很少见了。

       

      上图是Android系统架构图,作为Android应用程序的开发人员,我们一般只关注第一层即可:应用层。

       架构由下到上依次是:

      1. Linux内核。主要是Linux操作系统和硬件驱动,一般只有硬件厂商的开发人员会关注这一层。

      2. 核心类库和Android运行时。核心类库通常是由C/C++开发的二进制动态库,就是.so文件。比如数据库存储就依赖于此层提供的Sqlite.这些类库暴露出接口,使上层可以通过JNI的方式调用这一层。Android运行时提供了Dalvik虚拟机,供java程序编译运行,和编写一般的Java程序时用到的Java虚拟机不同,Dalvik运行的是.dex后缀的Java文件。

      3. 框架层。框架层提供多种系统服务,如以后会重点说道的组件管理服务,通过组件管理服务,Android提供了不同于其他操作系统的基于组件的设计模式。Android提供SDK就是这一层的部分代码。

       4.应用层。这一层才是我们主要的施展空间,这一层包含随系统发布的系统应用和我们下载安装的第三方开发的应用。应用开发利用Android SDK,用java语言开发,也可以用C/C++实现底层模块做成动态库,然后再写Java代码调用。因为Java代码容易反编译,我们可以看到像支付宝这类安全性要求极高的软件都有大量的.so文件,通常对软件中的关键算法和对性能要求极高的部分(使用.so未必能提高性能,大部分还是为了利用已有的算法代码和安全性考虑),我们会选择NDK编程制作库文件。

       一个程序的一般至少包含两部分,界面和后台。

       Android的UI编写通过资源文件和Java代码实现,资源文件包含布局文件、图像和文字颜色信息等,在Eclipse中支持以拖拽的方式控制和调节界面,提供实时预览。这些的表现形式都是xml文件,也就是说Android中是以XML来编写UI的。这样的好处是实现和java 代码的分离,尽可能实现复用。点击按钮、手势滑动等交互事件通过为各种控件添加事件监听对象实现。如果学过Windows编程,可能会怀念在Visual Studio里完全可视化的界面编写和双击控件就可以编写交互代码了。

       也支持纯粹的通过Java代码来编写界面,XML里的属性和Java代码里API通常时一一对应的。一般情况是XML写界面,运行时可能通过Java代码调节控件位置或增减控件。

       后台包含信息数据的获取和存储。信息获取方式包含从本地文件读取、通过网络方式获取还有通过系统设备拍照等等。本地文件的存储形式多样,支持一般的文件读写,键值对类型文件读写和数据库读写,支持在内部存储也支持在SD卡中读写。Android支持以java和apache httpclient进行网络访问,也支持通过socket通信实现信息交互。现在我们手机上的传感器越来越多,比如最近iphone加入的NFC芯片,这玩意儿在Android上几年前就有了。系统均提供API对这些传感器就行控制查询。

       最后,再强调一下Android的组件化设计思想,在使用Android程序时,比如我们打开微信的上传头像,会弹出照相机的界面,拍完照片后,微信能够拿到照片数据,这难道不是很神奇?拍照和微信是两个程序,为什么微信能在根本不知道拍照程序名字的情况下调用别的程序为它服务?


  

0 0
原创粉丝点击