原文出处: 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. Android 应用程序只运行一个实例
  5. android4.2上获取应用程序大小的变更点
  6. Android引导页面去除白屏
  7. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
  8. Android 之应用程序重启
  9. Android官方架构组件:Lifecycle

随机推荐

  1. docker是干什么的,docker常用命令
  2. Android如何设置圆角按钮
  3. Android中如何判断是否联网
  4. Android(安卓)统计图表引擎 AChartEngine
  5. Android(安卓)Stdio实现点击按钮出现图片
  6. android典型代码系列(二十六)------App w
  7. Activity基类广播退出APP
  8. APP启动时白屏或出现标题
  9. Android(安卓)Unable to execute dex: ja
  10. Android为Menu添加item及响应函数