Android应用程序有四个构建模块:
· 实体
· 意图接收机
· 服务
· 内容提供器
不是每一个应用程序都需要这四个模块,你的应用程序需要器中一个或者几个的组合。
一旦你决定你的应用使用的组件,你应当把它们列在名为
AndroidManifest.xml
的文件中。这是一个定义你的应用使用组件以及它们的性能和要求的
XML
文件。完整细节请参考
Android
注册文件部分的文档。
实体
实体是最常用的四个
Android
创建模块之一。一个实体就是一个应用程序的界面。每一个实体基类的派生类都可以作为你个单独的类执行,你的类将会显示一个由视图和响应时间组成的用户界面。很多应用程序包含大量的界面。例如,你个短消息应用程序可能有一个显示发送消息联系人列表,第二个界面就是写消息的界面,其它还有读消息界面和改变设置的界面。每一个界面都是作为一个实体来执行的。在某些例子中,一个实体可能返回一个值到前一个实体-例如一个实体让用户选择一张相片并且返回选定的相片给调用者。
当打开一个新的界面,前一个界面暂停并且存入历史栈中。用户向后浏览可以代开历史栈中的前一个界面。当它没有必要继续保存时,界面可以选择从历史界面删除。
Android
为每一从桌面启动的应用保存历史记录栈。
意图和意图过滤
Android
使用一种称作
”
意图
”
的特殊类来描述从一个界面切换到另一个界面,一个意图描述一个应用下一步希望做的事情。意图数据结构最重要的两个元素就使动作和动作使用的数据。动作的典型值有
MAIN
(实体的入口)
,
VIEW,
PICK,
EDIT,
等等。数据作为
URI(
统一资源标识符
)
进行传递。例如:浏览一个人的通信录信息,你可以创建一个带
VIEW
动作的意图
,
并且设置
URI
数据来代表那个人。
还有一个相关的类称作
InterFilter
。当一个意图是有效请求执行时,一个意图过滤器描述一个实体(或者意图接收器,见下文)能够执行的动作。一个能显示某个人通信录信息的实体将公布一个
InterFilter,
它知道怎样处理视图动作当你保存这些数据时。实体在
AndroidManifest.xml
文件中发布它们的
InterFilters
。
从一个页面浏览到另一个页面时通过分析意图完成的。一个实体调用
startActivity(myIntent)
实现向前浏览。系统查找所有安装系统的意图过滤器并且选择与
myIntent
匹配最好的意图过滤器的实体。新的实体由意图进行通知,并导致实体启动。当调用
startActivity
时,处理意图的进程在运行时启动,这可以提供两个好处(
The process of resolving intents happens at run time when startActivity is called, which offers two key benefits
)。
· 实体可以通过发出一个意图形式的请求来重用其它组建功能。
· 实体可以在任何时候被一个带有同样IntentFilter的新实体替换。
意图接收器
当你的希望拟定应用程序代码去响应执行一个外部时间时,你可以使用一个意图接收器,例如,当你的电话响铃时,或者当数据网络可用,或者当子夜来临时。意图接收器不用显示一个界面,尽管它们可以使用通告管理器来通知用户一些有意思的事情发生。意图接收器注册在
AndroidManifest.xml
文件中,但是你可以通过使用代码
Context.registerReceiver()
来进行注册。调用意图借收起时,你的应用程序不一定需要运行
;
系统将启动你的应用,如果需要的话,当意图接收器被触发后,应用程序可以通过调用
Context.broadcastIntent()
.
发送它们的意图到其它应用程序。
服务
服务是长期存在和运行的不带界面的代码。一个例子是媒体播放器从播放列表中播放歌曲。在媒体播放器应用程序中,可能有一个或者多个实体。然而,音乐重放应当被一个实体处理,因为用户希望在切换到其它界面时音乐能够继续播放。在这个例子中,媒体播放实体可以启动一个服务,使用
Context.startService()
在后台运行来保持音乐的播放。系统将保持阴血重放服务一直运行知道结束。(你可以通过阅读
Android
应用得活动周期来优先了解更多的服务提供功能)。注意你可以连接到一个服务(并且如果它还没有运行,你也可以启动它)通过条用
Context.bindService()
方法。当连接到一个服务后,你可以通过服务公开的接口与它进行通信。对于这个音乐播放服务,你可以暂停,重播,等等。
内容提供器
应用程序能保存它们的数据到文件中,一个
SQLite
数据库,或者其它的机制保存。一个内容提供器,在你希望你的应用程序数据同其它应用分享数据时是非常有用的。一个内容提供者方是一个类,它执行一套标准的方法,使得其它应用保存和获取它自己处理过的数据。
想了解更多的关于内容提供器的细节,请参考访问内容提供者。