[color=darkred]首先介绍一下Android体系结构,如果有不对的地方望指正![/color]
Android作为一个移动开发平台,其软件结构自下而上可以分为几次几个层次:
操作系统(os),中间件(MiddleWare),应用程序(Application),其中,MiddleWare包括了各种库(Libraries)和Android运行环境以及应用程序框架(Application Framework)
1.应用程序(Application)
Android本身提供了桌面(Home),联系人(Contact),电话(Phone)和浏览器(Browers)等核心应用,应用程序开发者可以利用应用程序框架层的API实现自己的程序。
2.应用程序框架(Application Framework)
下面介绍一下每个应用程序可能会使用到的应用框架的部分:
[list][*]一组Views(UI组件),这些UI组件包括列表(List),文本框(textbox),按钮(button)等,通过这些UI组件可以构建应用程序的视图部分;[/list]
[list][*]Content Providers,其提供一种机制,通过这种机制,应用程序可以实现数据的互访和共享;[/list]
[list][*]Resource Manger,它负责管理非代码的访问,如图片资源,设计布局的XML文件及国际化的字符串等;[/list]
[list][*]Notification Manager,它能让程序将自己的警示信息显示在状态栏上,例如有短信的时候;[/list]
[list][*]Activity Manager,它管理应用程序的生命周期,并且提供了应用页面退出机制在Android应用中每一个应用一般是由多个页面组成的,每一个页面的单位都是Activity,也就是说Android的应用程序是由多个Activity的交互构成的;[/list]
3.库(Libraries)和运行环境(RunTime)
这部分开始涉及底层,与应用程序的关系不是很密切。
Android中包含一些C/C++库,这些库可以被Android系统中不同的组件使用,通过Android应用程序框架为开发者提供服务,一下是一些核心库:
系统C库、媒体库、LibWebCore等。
Android包括了一个核心库,该库提供了java编程语言核心库的大多数功能。
4.操作系统(os)
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik依赖于Linux内核的一些功能,例如,线程机制和底层内存管理机制。
[color=darkred]其次是Android应用程序组成[/color]
一个Android程序有四个部分组成:Activity、Broadcast Intent Receiver、Service、Content Provider。并不是每一个程序都是由这四部分组成的,例如HelloWorld只涉及了Activity。在Android中有一个叫做AndroidManifest.xml,在这个文件中需要申明用到的上面四类组件名称,以及可能为每一个组件的功能和需求进行必要的描述。下面分别介绍一下这四个组件:
1、Activity
它是Android中最基本的模块之一,Activity一般代表手机屏幕的一屏。[color=red]Activity相当于一个UI的容器[/color],在Activity中可以添加一些View,并对这些View做一些事件处理,例如加一些Button,Check box等,按一下button可以实现Activity之间的跳转,和网页跳转不同的是Activity之间的跳转可能会有返回值。Android会把每一个应用程序的Activity都保存在堆栈中。
Intent就是一次对将要执行的操作的抽象描述,Intent最常用的作用是通过Intent可以实现多个Activity之间的跳转,Intent中重要的部分是Intent动作(Action)和动作对应的数据(Data),典型的动作有:MAIN(Activity的门户)、VIEW、PICK、EDIT等而动作对应的数据则以URI的形式进行标示,例如查看一个人的联系方式,需要创建一个VIEW动作的Intent,以及这个人的URI,下面代码是实现两个Activity之间的跳转(A跳转到B):
Intent in = new Intent(A.this,B.class);//指定Intent要启动的类
startActivity(int);//启动一个新的Activity
A.this.finish();//关闭当前的Activity
与Intent有关的类叫做Intent Filters,一个Intent Filters用于描述一个Activity可以操作哪些Intent,一个Activity如果需要显示一个人的联系方式,需要声明一个Intent Filters,这个Intent Filters要知道如何处理VIEW动作和表示一个人的URI,Intent Filters一般在AndroidManifest.xml中定义。
2、Broadcast Intent Receiver
利用它可以让应用对一个外部事件做出响应。例如来电或是下载成功后,需要利用BroadcastReceiver进行处理,它通过Notification Manager来通知用户这些事发生了!BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册;各种应用程序可以通过使用Context.sendBroadcast()将他们自己的intent broadcasts广播给其他应用程序。
3、Service
举个例子:打开一个新的应用程序原来的应用程序仍在进行,这就是通过Service进行控制的。通过startService(Intent service)可以启动一个Service,通过Context.bindService()可以绑定一个Service。
4、Content Provider
数据在Android中是私有的,Content Provider类实现了一组标准的方法接口,从而能够让其他应用程序保存和读取此Content Provider的各种数据。下面列举一些常见的接口:
query(Uri,String[],String,String[],String)通过关键字查询数据
insert(Uri,ContentValues)将一组数据插入到指定的地方
update(Uri,ContentValues,String,String[])更新数据
delete(Uri,String,String[])删除数据
[color=darkred]最后介绍一下Android应用工程中文件组成[/color]
[list][*]源文件,源文件都在src目录中;[/list]
[list][*]R.java文件,这个文件是Eclipse自动生成的,R文件对开发者来说是没用的,但是对Android系统非常有用,在该文件中Android对下边即将介绍的资源进行了全局索引,如果res文件夹中的内容发生了改变,R.java会重新编译,同步更新;[/list]
[list][*]Android Library,这个事应用运行的Android库;[/list]
[list][*]assets目录,放置多媒体等一些文件;[/list]
[list][*]res目录,放置应用到的资源文件:drawable里面放置用到的图片资源;layout里面放置用到的布局文件,这些文件都是xml的;values里面放置字符串文件(strings.xml)、颜色文件(colors.xml)、数组文件(arrays.xml);[/list]
[list][*]AndroidManifest.xml,该文件是配置文件,在该文件中必须声明应用的名称,Activity,Service以及receiver,content provider;[/list]