一般的android应用程序由4部分组成分别是:
Activity
Broadcast Intent Receiver
Service
Content Provider
并不是说所有的应用程序都是由这四个部分组成,有的简单的应用只需要Activity就可以了,有的只需要Broadcast Intent Receiver就可以了。
在android项目里边有个AndroidManifest.xml文件,这个文件非常重重要,就和Asp.net中的web.config文件一样,应用中要用到的组件都要首先在这个文件中
进行描述声明后才可以正常使用,否则程序中用到了上述的组件了,也不会起作用。
一、Activity 组件
Activity是开发android应用的过程中使用的最频繁的组件,它是android的最基本的组件之一。在android程序中Activity代表了手机的一个屏幕,好比Asp.net应用中的一个网页,一个android应用相当于一个web站点。在Activity中我们可以添加View,并且对View做一些操作,View可以理解为一个UI容器,在这个容器中可以添加很多UI 元素,比如:Button,TextView,EditView,List等,这些丰富的UI元素组成了和用户交互的时的丰富的用户界面,Activity控制着View中各个元素的逻辑处理和导航,比如Activity1跳转到Activity2,当然也可以在Activity2关闭的时候返回一个值给Activity1这个和Asp.net中弹出一个对话框,当关闭对话框时返回一个值给原页面是一样的,这样在开发中解决很多问题是非常方便的。
Android的导航是由一个stack控制,当打开一个新的屏幕时原来的屏幕会被置为暂停状态,并且压入历史堆栈,用户可以通过返回操作来弹出栈顶的屏幕并设置为当前操作的屏幕界面。android会把每个应用从开始到当前的每一个屏幕的页面都压入到堆栈中,在开发过程中可以有选择的移除一些堆栈中不会用到的界面。Activity是由android系统进行维护的,它有自己的生命周期。
二、Broadcast Intent Receiver组件
可以使用BroadcastReceiver来让应用对一个外部的事件作出响应,因此利用这个组件可以做一些很有意思的事情,我之前写的一篇Android中发送和接收短信就是用BroadcastReceiver组件来实现的。当电话和短信这个外部事件发生时就可以利用BroadcastReceiver组件来进行处理。BroadcastReceiver不能直接生成与用户交互的界面,因为界面是由Activity负责的,换句话说对用户来说是不透明的,用户看不到它,这个和Windows Service 类似,但是BroadccastReceiver可以通过NotificationManager来通知用户发生了什么事情,也可以使用Toast来通知用户。要使用BroadcastReceiver组件,首先要在AndroidManifest.xml中进行注册或者在代码中使用Context.registerReceiver()进行注册,只要注册了,当事件发生了,即使应用没有启动,android也会自动启动应用,来响应发生的事件。
三、Service组件
Service是一种程序,它可以运行很长时间,但它和BroadcastReceiver组件一样也没有界面,这些服务可以提供系统的某些能力,来供调用,它更像是一组API。例如播放音乐的Sevice,它可以控制音乐的播放,停止。通过startService(Intent service)可以启动一个service,可以通过Context.BindService()绑定一个Service。
四、Content Provider组件
数据在android中是私有的不能进行共享,这些数据包括文件和数据库,但是如果一个应用要使用另一个应用的数据在怎么做呢?那么这个时候Content Provider就派上用场了,一个Content Provider定义了一组标准的方法的接口,能使其它应用保存和读取此Content Privider的各种数据,那么怎么来实现呢?那就是通过去实现Contnent Privider的接口就可以了,Content Privider已经实现了数据的封装和处理,外界是看不到数据的具体存储细节,只需要通过这些标准的接口打交道就可以了,可以读取数据,删除数据,插入数据等等操作。例如android的基本应用Contects就就通过这种方式共享通讯录数据的,其它应用可以通过Content Provider组件操作通讯录中的数据。
总结,android应用的开发过程中主要使用的是以上的四个组建,灵活的使用这些组建可以满足大部分应用,其中Activity的使用是最频繁的,许多应用基本上都是有若干的Activity的相互交互构成的。