原文出处: http://www.robotercoding.com/blog/?p=33

http://code.google.com/android/intro/anatomy.html进行了翻译

在一个Android 应用中有如下的四种组件:
* Activity 活动组件
* Intent Receiver 接受处理组件
* Service 服务组件
* Content Provider 内容提供组件
一个Android 应用并不需要同时具有这四个组件,应用可以组合这些组件。

在应用中一旦决定使用了哪些组件,就需要在AndroidManifest.xml文件中列举出来。可以参考Android manifest file documentation

Activity
Activities是最普遍的组件,在应用中通常用于显示一个屏幕(页面)的内容,仅仅一个屏幕(页面)的内容。开发人员需要从Activity基 类继承下来,管理UI显示和UI的反馈事件。大多数应用程序都会有多个屏幕(页面)的内容,如一个文本消息的应用程序,第一个页面要显示联系人列表,第二 个页面要写东西给选定的联系人,其他页面显示旧的文本内容或者其他等等。每一个页面都被当做一个Activity(活动组件),移动到其他页面意味着开始 了一个新的Activity(活动组件)。在某些场景下,一个Activity可以返回值给前一个Activity,如一个页面选择了一张图片,可以返回 这张图片给调用者(Activit)。

打开新的页面时,前一个页面将会暂停,放置到一个历史堆栈中,用户可以使用后退键浏览前面的页面,页面也可以从堆栈中删除。Android会为每一个从主页面home screen(idle界面?)启动的应用维护一个历史堆栈列表。

Intent and Intent Filters
Android使用一个叫Intent的类从一个页面移动到另外一个页面。一个Intent描述了应用将要做的事情,就是一种动作行为。最重要的有两点: 动作的类型和动作所捎带的参数(数据),典型的动作类型为MAIN(activity的正门),VIEW, PICK, EDIT等等。参数数据以URI形式来表示。例如,为了查看一个人的联系信息,需要创建一个Intent,动作类型为VIEW,人名为参数数据(需要格式 化为URI)。

一个Activity为了表明能够处理某些Intent,Android设计了一个相关的类IntentFilter,Activity在 IntentFilter中决定它能够处理的Intent动作类型,IntentFilter需要在AndroidManifest.xml文件中进行声 明。

从一个页面到另外一个页面跳转的依据在于发出的Intent,为了向前浏览,Activity调用startActivity(myIntent). Android系统在所有安装的应用程序中查找intent filters,找出最能够匹配myIntent的Activity。新的activity将被启动,intent被传入。有如下两个关键点:
* Activities 能够重新被使用
* Activities 在任何时候都可以被替换,只要一个Activity设置了相同的IntentFilter

Intent Receiver
在应用程序中,针对外部事件需要执行一些动作来反馈,可以使用IntentReceiver类。例如:来了一个电话,或者数据通道可用,或者晚上到了。 Intent Receiver没有UI的显示,尽管可以通过NotificationManager 通知用户某些有趣的事情发生了。Intent Receivers也需要在AndroidManifest.xml中进行声明,当然也可以在程序中调用 Context.registerReceiver()接口动态声明。同时在应用程序没有跑起来的时候也能够调用Intent Receivers,当一个Intent Receivers被触发时,Android系统将会启动这个应用程序。应用程序也能够通过Context.broadcastIntent()广播他们 的Intent。

Service
一个Service是没有UI,一直运行在后台的代码组件。一个好的例子:播放器从一个播放列表中播放歌曲。在一个播放器应用中,大概会有一个或多个 Activity组件允许用户选择歌曲和播放它们,歌曲播放代码不应该放在Activity组件中,因为我们希望一直能够听歌,甚至切换到了其他页面。所 以,播放器页面应该启动一个服务组件(Context.startService())来播放歌曲。Android系统将会保持service运行直到它 结束(可以参考“Android 应用的生命周期”一文)。可以使用Context.bindService()接口连接上一个服务(如果这时候服务没有启动,连接会导致服务启动),连接 上之后,就可以和服务进行通讯。像播放器的例子,可以允许暂停,重绕等等。

Content Provider
应用程序可以在文件中,数据库或者其他设备存储他们的数据。Content Provider用于将各个应用程序的数据进行共享,Content Provider是一个类,执行一套标准的方法,让其他的应用程序存储和获取Content Provider所处理的数据。更多的内容可以参考 Accessing Content Providers.

更多相关文章

  1. android应用程序跳转到系统的各个设置页面
  2. 如何以编程方式退出android应用程序
  3. Android(安卓)Application Fundamentals——Android应用程序基础
  4. Get the Android(安卓)SDK---获取Android(安卓)SDK
  5. android4.2上获取应用程序大小的变更点
  6. android4.2上获取应用程序大小的变更点
  7. Android(安卓)拦截 HOME 按键
  8. android之webview使用-处理404等错误
  9. Android引导页面去除白屏

随机推荐

  1. Android(安卓)中Parcelable的作用
  2. Android开发当中Parcelable,Serializable
  3. Ubuntu 10.04 编译Android(安卓)2.1源码
  4. android开发每日汇总【2011-11-10】
  5. Android(安卓)五大布局
  6. Android(安卓)NoSQL之SnappyDB
  7. Android商城购物车页面实现和逻辑实现
  8. Android瀑布流控件——AndroidStaggeredG
  9. 基于Android平台的Web服务技术研究
  10. 自定义实现简单的Android颜色选择器(附带