对于一个 Android 应用程序有四种构成部分
� Activity
� Intent Receiver
� Service
� Content Provider
不是每一个的应用程序都需要所有这四个部分,但是你的应用程序将会用这些的
组合来编写。
一旦你决定了你应用程序需要哪些组件,你应该在一个名叫 Android Manifest.xml
文件中列出它们。这是一个 XML 文件,在里面声明你应用程序组件和它们的功
能和需求是什么。我们将马上讨论,Android Manifest.xml 负责什么作用。
Activity
Activity 是 Android 四个构建模块中最普通的一个。一个 Acitivity 通常在你应用
程序中是一个单独的屏幕。每一个 Activity 是被实现作为一个继承于 Activity 基
类的单独的类。你的 Class 将要显示一个由 View 和响应事件组成的用户界面。
多数应用程序由多个屏幕组成。例如:一个文本消息发送程序可能有一个显示
要发送信息的联系人列表的屏幕,有一个给选中的联系人编辑短信的屏幕,并
且另外的屏幕显示以前信息或是更改设置。每一个这些屏幕应该作为一个
Activity 被实现。移动到另外的屏幕上是通过启动一个新的 Activity 来完成。由
于一些原因,一个 Activity 可能会向先前的 Activity 返回一个值——例如:一个
让用户选择一个 Photo 的 Activity 将会返回选中的 photo 到 caller 应用程序上。
当一个新的屏幕开启,先前的屏幕被暂停并且压入历史堆栈。用户可以向后导航
返回到在历史记录中先前打开的屏幕。当它们遗留不适当时,屏幕也可以选择从
历史堆栈中删除。Andriod 为每一个从 Home 屏幕上运行的每一个应用程序保留
历史堆栈。
Intent 和 Intent Filter
Android 使用一个名叫 Intent 的特殊类来让应用程序从一个屏幕移动到另一个屏
幕。Intent 描述了一个应用程序想要干什么。Intent 数据结构的两个最重要的部
分是:要响应的 action 和 data。典型的 action 值是 M AIN (应用程序的入口), VIEW 、
PICK、EDIT ,等等。Data 表示成一个统一资源定界符(URI). 例如:要在浏览器
中查看一个网站,你将创建一个带有 VIEW action 的 Intent 和设置了网站 URI 的
data 。
Intent Receiver
当你想要在你的应用程序中编码来执行对外部事件的响应,你可以使用一个
IntentReceiver 。例如:当电话响铃,或当数据网络可用时,或当午夜时。虽然
IntentReceiver 不显示一个 UI,但它们也许会显示一个通知来提醒用户是否有令
人感兴趣的事件发生。IntentReceiver 也是在 Android Manifest.xml 中被注册,但
你也可以在代码中使用"Context.register Receiver( )"来注册它们。它的
IntentReceiver 被调用时,你的程序不是非得运行的;假如必要时,当一个
IntentReceiver 被触发时,系统将会调用你的应用程序。通过使用
"Context.broadcastIntent()",应用程序也能发送它们自己的"I ntent Broadcast"给别
的应用程序
Service
一个 service 是长期存活并且运行时不带 UI 的编码。这个 Service 的好例子是
Media Player 从一个播放列表中播放歌曲。在一个 Media Player 应用程序中,可
能有一个或更多的 Activity,这些 Activity 允许用户选择歌曲和开始播放歌曲。
然而,音乐回放本身不应该被一个 Activity 处理,因为用户将期望在导航到一个
新的屏幕后音乐保持播放。这种情况中,Media Player Activity 应该使用
"Context.startServer()" 来启动一个服务在后台运行来保持音乐继续播放。接下来
系统将保持音乐回放 Service 运行,直到这个 Service 被停止。(通过阅读 Androi d
应用程序生命周期,你可以学到更多关于先前给出的系统中的 Service 。的信息 。)
记住,你可以使用"Context.bindSer ver()" 方法来连接一个 Service (如果还没有运
行,并开启它)。当连接到一个 Service ,你可以通过一个 Service 显露出来的
Interface 来和它通信。对于音乐 Service ,这可能允许你暂停、倒回,等等。
Content Provider
应用程序可以把他们的数据存储到文件中,一个 SQLite 数据库中,设置中,或
是任何其他的有意义结构中。如果你想要你的应用程序的数据和其他应用程序共
享,一个 Content Provider 是有用的。一个 Content Provider 是一个类,它实现了
方法的一个标准设置来让其他应用程序存储和恢复被 Content Provider 处理的数
据类型。
沒有留言:
張貼留言