深度剖析Android应用程序的四种构造块


  本文标签:Android应用程序

  Android应用程序能够将它们的数据保存到文件中、SQL数据库中,甚至是任何有效的设备中,但前提是要深入理解到底什么是Android应用程序,及Android应用程序是怎么运作的  。

  对于一个Android应用程序来说,是由四种构造块组织而成的,这四种构造块如下:
◆Activity
◆Intent Receiver
◆Service
◆Content Provider

  但是,并不是每一个Android应用程序都需要这四种构造块,这不是必须的,某些时候,我们只需要这四种中的几种组合成我们的应用  。

  当我们明确了我们的应用需要哪些构造块后,我们就需要在AndroidManifest.xml中登记这些构造块的清单  。这是一个XML配置文件  。

  这个配置文件用于定义我们的应用程序的组件、组件的功能及必要条件等  。这个配置文件是每个Android应用必需的  。对于AndroidMainfest.xml的Schema,参考SDK包附带的文档  。以下,我们对四种构造块做一些说明:

  1、Activity

  Activity是Android构造块中最基本的一种,在应用中,一个activity通常就是一个单独的屏幕  。每一个activity都被实现为一个独立的类  。并且继承于Activity这个基类  。这个activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应  。大部份的应用都会包含多个的屏幕  。

  例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕  。每一个这样的屏幕,就是一个activity  。从一个屏幕导航到另一个屏幕是很简单的  。在一些应用中,一个屏幕甚至会返回值给前一个屏幕  。

  当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中  。用户可以返回到历史堆栈中的前一个屏幕  。当屏幕不再使用时,还可以从历史堆栈中删除  。默认情况下  。

  Android将会保留从主屏幕到每一个应用的运行屏幕  。Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动  。Intent类用于描述一个应用将会做什么事  。在Intent的描述结构中  。

  有两个最重要的部分:动作和动作对应的数据  。典型的动作类型有:MAIN(activity的门户)、VIEW、PICK、EDIT等  。而动作对应的数据则以URI的形式进行表示  。例如:要查看一个人的联系方式  。

  你需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI  。与之有关系的一个类叫IntentFilter  。相对于intent是一个有效的做某事的请求,一个intent filter则用于描述一个activity(或者Intent Receiver)能够操作哪些intent  。

  一个activity如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI  。IntentFilter需要在AndroidManifest.xml中定义  。

  通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的  。当向前导航时,activity将会调用startActivity(Intent myIntent)方法  。然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的activity  。

  新的activity接收到myIntent的通知后,开始运行  。当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:
A、Activities能够重复利用从其它组件中以Intent的形式产生的一个请求;
B、Activities可以在任何时候被一个具有相同IntentFilter的新的Activity取代  。