1.3 Android基础知识
作为一个优秀的开发框架,和其他开发工具一样,Android有自己的特点和优势,本节我们就对此进行介绍,让读者感受到Android特有的气质并掌握学好它的方法。
1.3.1 Android丰富的特性
Android是Google公司推出的手机开发平台。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。
Android的主要特性如下:
应用框架可以重复使用,其组件也可以更换。
Dalvik虚拟机针对移动设备进行了优化。
优化的图形能力支持2D、3D图形(OpenGL ES 1.0)。
集成了基于开源WebKit引擎的浏览器。
SQLite作为结构化数据存储。
多媒体支持多种音频、视频格式。
GSM Telephony(hardware dependent)。
支持蓝牙、3G和WiFi。
支持照相机、GPS、指南针和加速度仪等传感器硬件。
丰富的开发环境,包括模拟机、调试工具、内存运行检测及为Eclipse IDE所写的插件。
1.3.2 Android组织结构及应用框架
Android采用了软件堆的架构,主要分为三个部分:操作系统、中间软件和应用程序。底层以Linux内核为基础,只提供基本功能。其他的应用软件则由各公司自行开发,以Java作为编程语言。另外,为了推广此技术,Google联合30多家移动公司集资成立了手机开发联盟组织。
1.Android平台构成
Android是一个平台,主要包括Linux微内核、中间件(SQLite等)、关键应用(电话本、邮件、短消息、GoogleMap、浏览器等)、提供的Java框架及Android中的JVM。
2.Android特点之关键类
View视图类,ContentProviders(应用交互管理类)、ResourceManager(非编码资源管理类)、NotificationManager(通告管理类)、ActivityManager(生命周期管理类)。
3.Android特点之界面开发
这一块主要讨论了Android的界面开发机制,可以将组件的初始化抽取出来放到配置文件中,组件更新用编码方式来处理。
4.应用构成
Android的应用一般由四个关键部分构成:Activity、IntentReceiver、Service、ContentProvider。
Activity是必要部分,Activity每个应用都必须得有,Activity代表一个应用的具体的界面管理类,其本身并不显示。
IntentReceiver可使应用对外部事件做出响应。例如,应用正在执行的时候突然有来电,这个时候可使用IntentReceiver做出处理使应用更健壮可靠。
Service Android应用的生命周期是由Android系统来决定的,不由具体应用的线程左右。如果应用要求在没有界面显示的情况下也能正常运行(要求有后台线程,而后台线程是不会被系统回收的,直到线程结束),这个时候就需要用到Service。所以服务一般都是和线程联系在一起的。
ContentProvider封装了很多Android当中的上下文环境,包括SQLite,使得在不同应用之间交互成为可能。
5.Android特点之布局管理
FrameLayout:左上角只显示一个组件。
LinearLayout:线性布局管理器,分为水平和垂直两种,只能进行单行布局。
TableLayout:任意行和列的表格布局管理器。其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。
AbsoluteLayout:绝对布局管理器,坐标轴的方式,左上角是(0,0)点,往右X坐标递增,往下Y坐标递增。
RelativeLayout:相对布局管理器,具有一定的灵活性的视图组件,它由视图之间或与上层组件的相对位置来确定下一个组件的位置。
6.Activity交互
Intent其实就是用来在Activity之间做交互用的,需要说明的是,Intent有个意图说明,值得用户深究,举个简单的例子,有种Intent叫Intent.ACTION_CALL,可直接拨打电话。
7.SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类,主要用于保存一些常用的配置。它类似于过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,最终以XML方式来保存,效率不如Intent,但是由于可以共享,所以可以在Acitivity之间交互。其效率比SQLite要高。
SQLite也就是数据库,这种方式不推荐使用,因为影响效率,如果是在不同应用之间交互或是在需要永久存储的情况下,可以考虑SQLite。
8.Android特点之生命周期
理解Android生命周期非常重要,每一个Android应用都是以一个进程的方式运行的,其生命周期不由自身控制,而是由系统根据运行的应用的一些特征来决定的。所以理解好Android生命周期对你的应用什么时候会被系统回收很重要。
理解好生命周期可提高应用的健壮性。例如,应用的初始化应该放到onCreate方法中,应用暂停的时候应重写onPause方法来保存当前应用的操作结果。
9.SQLite
SQLite是Android中提供的内置数据库,据说比MySQL更轻巧。SQLite也是开源产品。数据库的操作方式主要有以下几种:
SQL语句直接操作,插入、更新、删除都可以直接写SQL语句,调用execSQL()就可以。
查询需要使用rawQuery()来完成,查询结果返回一个可滚动的结果集。
Cursor在对Cursor操作前,需要将其游标移动到第一位,每取一个结果向下移一位。
学习小贴士
Android实际开发经验分享:
● 自定义组件的显示问题。在写自定义视图的时候经常要对视图的X、Y坐标进行调整,以达到预期的理想位置。可以将每个组件的X、Y坐标值画到组件旁边,这样很直观,一看就知道该怎样调整。
● 使用Log来打印日志和进行调试。
● 使用LogCat视图。在showView中有LogCat视图,LogCat视图会显示一些Android仿真器打印出的堆栈信息,对应用的调试非常有帮助,另外Log打印的日志也在这边显示。
● 使用Emulator Control视图。Emulator Control可以完成一些简单的设备操作,如模拟来电、短消息。
● 活用tools目录下的工具。该目录在Android SDK中都有提供,通过这些工具可以操作Android仿真器,如创建一个虚拟SD卡,将系统中的文件移动到虚拟SD中,Android都提供了相应的工具,相关命令可以上网查阅。
1.3.3 学习Android必备知识
1.Java基础知识
J2SE:Java基础类[lang包、IO包、util包(集合框架)、面向对象、多线程、网络编程]。
2.J2EE知识
如果你想进行Android客户端应用程序的开发,这部分知识是必备的。显然,Android客户端只做数据的请求、展现,所需的数据在服务器端。
技能点:Tomcat(Weblogic)、XML解析、JSON解析、JSP/Servlet;了解SSH。
3.Linux、C语言知识
如果深入研究Android底层,有必要学习一下这一部分的知识,以便于你的后续发展。