Android应用程序结构介绍

首先介绍一下Android体系结构,如果有不对的地方望指正!

Android作为一个移动开发平台,其软件结构自下而上可以分为几次几个层次:

操作系统(os),中间件(MiddleWare),应用程序(Application),其中,MiddleWare包括了各种库(Libraries)和Android运行环境以及应用程序框架(ApplicationFramework)

1.应用程序(Application)

Android本身提供了桌面(Home),联系人(Contact),电话(Phone)和浏览器(Browers)等核心应用,应用程序开发者可以利用应用程序框架层的API实现自己的程序。

2.应用程序框架(ApplicationFramework)

下面介绍一下每个应用程序可能会使用到的应用框架的部分:

  • 一组Views(UI组件),这些UI组件包括列表(List),文本框(textbox),按钮(button)等,通过这些UI组件可以构建应用程序的视图部分;
  • ContentProviders,其提供一种机制,通过这种机制,应用程序可以实现数据的互访和共享;
  • ResourceManger,它负责管理非代码的访问,如图片资源,设计布局的XML文件及国际化的字符串等;
  • NotificationManager,它能让程序将自己的警示信息显示在状态栏上,例如有短信的时候;
  • ActivityManager,它管理应用程序的生命周期,并且提供了应用页面退出机制在Android应用中每一个应用一般是由多个页面组成的,每一个页面的单位都是Activity,也就是说Android的应用程序是由多个Activity的交互构成的;
3.库(Libraries)和运行环境(RunTime)

这部分开始涉及底层,与应用程序的关系不是很密切。

Android中包含一些C/C++库,这些库可以被Android系统中不同的组件使用,通过Android应用程序框架为开发者提供服务,一下是一些核心库:

系统C库、媒体库、LibWebCore等。

Android包括了一个核心库,该库提供了java编程语言核心库的大多数功能。

4.操作系统(os)

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik依赖于Linux内核的一些功能,例如,线程机制和底层内存管理机制。

其次是Android应用程序组成

一个Android程序有四个部分组成:Activity、BroadcastIntentReceiver、Service、ContentProvider。并不是每一个程序都是由这四部分组成的,例如HelloWorld只涉及了Activity。在Android中有一个叫做AndroidManifest.xml,在这个文件中需要申明用到的上面四类组件名称,以及可能为每一个组件的功能和需求进行必要的描述。下面分别介绍一下这四个组件:

1、Activity

它是Android中最基本的模块之一,Activity一般代表手机屏幕的一屏。Activity相当于一个UI的容器,在Activity中可以添加一些View,并对这些View做一些事件处理,例如加一些Button,Checkbox等,按一下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有关的类叫做IntentFilters,一个IntentFilters用于描述一个Activity可以操作哪些Intent,一个Activity如果需要显示一个人的联系方式,需要声明一个IntentFilters,这个IntentFilters要知道如何处理VIEW动作和表示一个人的URI,IntentFilters一般在AndroidManifest.xml中定义。

2、BroadcastIntentReceiver

利用它可以让应用对一个外部事件做出响应。例如来电或是下载成功后,需要利用BroadcastReceiver进行处理,它通过NotificationManager来通知用户这些事发生了!BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册;各种应用程序可以通过使用Context.sendBroadcast()将他们自己的intentbroadcasts广播给其他应用程序。

3、Service

举个例子:打开一个新的应用程序原来的应用程序仍在进行,这就是通过Service进行控制的。通过startService(Intentservice)可以启动一个Service,通过Context.bindService()可以绑定一个Service。

4、ContentProvider

数据在Android中是私有的,ContentProvider类实现了一组标准的方法接口,从而能够让其他应用程序保存和读取此ContentProvider的各种数据。下面列举一些常见的接口:

query(Uri,String[],String,String[],String)通过关键字查询数据

insert(Uri,ContentValues)将一组数据插入到指定的地方

update(Uri,ContentValues,String,String[])更新数据

delete(Uri,String,String[])删除数据

最后介绍一下Android应用工程中文件组成

  • 源文件,源文件都在src目录中;
  • R.java文件,这个文件是Eclipse自动生成的,R文件对开发者来说是没用的,但是对Android系统非常有用,在该文件中Android对下边即将介绍的资源进行了全局索引,如果res文件夹中的内容发生了改变,R.java会重新编译,同步更新;
  • AndroidLibrary,这个事应用运行的Android库;
  • assets目录,放置多媒体等一些文件;
  • res目录,放置应用到的资源文件:drawable里面放置用到的图片资源;layout里面放置用到的布局文件,这些文件都是xml的;values里面放置字符串文件(strings.xml)、颜色文件(colors.xml)、数组文件(arrays.xml);
  • AndroidManifest.xml,该文件是配置文件,在该文件中必须声明应用的名称,Activity,Service以及receiver,contentprovider;

相关推荐