高达00皇小姐无翼鸟:Android应用程序结构

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 17:28:02
Android应用程序结构(2008-04-24 20:56:10) 标签:android 应用程序 结构 activity intent service content provider it  分类:Android

Android应用程序剖析

Android应用程序由四部分组成:

1.  Activity

2.  Intent Receiver

3.  Service

4.  Content Provider

并非所有的应用程序都要包括所有四个部分,但是您的应用程序是由其中的组合构成的。

一旦您决定使用哪个组件,您需要把它们列出在名为AndroidManifest.xml的文件中。这是一个XML文件,其中声明了您的应用程序中所需要的组件以及它们的功能和需求。

Activity

Activity是四个Android构造块中最基本的组件。一个activity通常是一个单独的屏幕。每一个activity作为一个独立的类来实现,均继承自Activity基类。您的activity类将显示一个由若干Views控件组成的用户界面并对事件做出响应。大多数应用程序包含多个屏幕。举例来说,一个文本消息应用程序也许会有一个屏幕,用来显示联系人列表,第二个屏幕用来编辑短消息,还有用来浏览历史消息或者用来更改设置的屏幕。每一个这样的屏幕都将作为一个activity。切换屏幕是通过打开一个新的activity来实现的。在一些实例中,一个activity会将返回值返回给前一个activity,比如,一个允许用户选择图片的activity将返回选中的图片到调用方。

当一个新的屏幕打开,前一个屏幕将暂停并保存在历史堆栈中。用户在历史堆栈中可以回退到前一个屏幕。当屏幕不再使用时,还可以在历史堆栈中删除。Android将保留历史堆栈为从主屏幕开始的每一个应用。

Intent以及Intent Filters

Android使用一个名为Intent的类来完成屏幕间的切换。Intent类描述了应用程序想要做什么。一个intent的数据结构包含两个最重要的部分为action(动作)和data(数据)。典型的action有MAIN(activity的入口)、VIEW、PICK、EDIT等。data是以URI的形式表示的。例如,要显示一个人的联系方式,您需要创建一个intent,其中action为VIEW,data为表示这个人的URI。

还有一个相关的名叫IntentFilter的类。如果说intent是一个要做什么事的请求的话,那么IntentFilter则是用来描述一个activity能够操作哪些intent。一个能够显示联系人信息的activity将声明一个IntentFilter来描述如何操作VIEW动作和表示这个人的URI。Activities在AndroidManifest.xml中声明IntentFilter类。

屏幕间的切换是通过解析Intent实现的。当前向导航时,activity会自动调用startActivity(intent myintent)方法。系统会在所有应用程序中定义的IntentFilter中查找,选择最匹配myintent的Intent对应的activity。新的activity收到intent的通知后,开始运行。Intents解析过程在startActivity()方法被调用时发生,提供了两个好处:

1.  Activity能够通过简单的以Intent的形式发送请求来重用其他组件中的功能。

2.  Activity能够在任何时候由一个带有相同IntentFilter的Activity来替换。

Intent Receiver

您可以使用IntentReceiver来使您的应用程序代码能够响应外部事件,如电话呼入、数据网络可用、处于晚上时。尽管IntentReceiver可以使用NotificationManager来提醒用户一些感兴趣的事件的发生,但是它并不显示用户界面。Intent Receiver在AndroidManifest.xml中完成注册,当然您也可以在代码中通过Context.registerReceiver()方法完成注册。您的应用程序的触发不必调用intent receiver;系统会在需要的时候启动您的应用程序,当intent receiver被触发时。应用程序也可以通过Context.broadcastIntent()将自身的intent广播给其他应用程序。

Service

Service是具有长生命周期,且没有用户界面的程序。典型的例子是正从播放列表中播放歌曲的媒体播放器。在媒体播放器中,可能将有一个或多个activities允许用户选择歌曲并播放它们。然而,音乐回放并不需要activity的操纵,因为用户希望音乐播放能够在屏幕切换到新的屏幕时继续播放。在这个例子中,媒体播放器会调用Context.startService()来启动一个Service在后台运行来播放歌曲。系统将会保持音乐回放service的运行直到其结束。注意您可以通过Context.bindService()方法连接一个service(如果它还没有运行将启动它)。当连接到一个service后,我们还可以通过service提供的接口与之通讯。正如媒体播放器,我们还可以进行暂停、重播等操作。

Content Provider

应用程序能够将数据存储在文件、SQLite数据库或者其他有效的机制中。当您想要与其他应用程序共享您的数据时,Content Provider将会非常有用。Content Provider也是一个类,其被实现为一组标准的方法,使其他应用程序能够存储和检索此Content Provider操作的数据类型。