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

移动开发 Android
下文讲述Android应用程序的四种构造块,它们分别是:Activity、Intent 、ReceiverService、Content Provider 。

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取代。

【编辑推荐】

  1. Android应用程序组建原理深入剖析
  2. Android SMS短信服务相关概念简述
  3. PythonAndroid数据库相关代码解读
  4. PythonAndroid安装卸载程序具体操作方法解析
  5. Android应用程序的四个关键点
责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-03-04 10:11:17

Android手机系统

2010-02-01 14:05:03

2010-01-26 17:16:33

C++应用程序

2009-03-11 13:38:37

构造块ActivityIntent Rece

2014-09-22 13:30:09

Docker云计算

2010-03-04 16:21:15

Android Mar

2010-01-25 17:14:44

Android应用程序

2010-01-25 10:57:57

Android系统应用

2010-02-04 09:41:03

Android应用程序

2010-06-09 09:41:33

UML类图

2022-09-27 15:16:42

开发Android应用程序

2013-06-14 15:24:57

Android开发移动开发数据存储方式

2011-06-01 17:35:35

Android Activity

2017-04-17 19:31:03

Android多线程

2023-10-21 21:13:00

索引SQL工具

2022-10-27 09:50:41

数据仓开发

2013-06-28 10:17:04

2014-12-25 09:41:15

Android加载方式

2010-02-22 15:49:35

Python应用程序

2020-08-03 15:41:02

JavaScript开发技术
点赞
收藏

51CTO技术栈公众号