`

Google Android 应用程序结构

 
阅读更多
原文出处: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.
分享到:
评论

相关推荐

    Android 的应用程序结构分析:HelloActivity

    Android 的应用程序结构分析:HelloActivity

    Android应用程序开发教程PDF电子书完整版、Android开发学习教程

    Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历, 地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。 应用程序框架 开发人员也可以...

    Google Android揭秘.pdf

    三位作者展示出他们在移动开发领域所积累的经验,并运用他们对Android技术文档的深入理解,从,Android平台的基础知识讲起,再逐步深入到构建Android应用程序所需的基本技能,最后结合示例介绍了如何创建比较复杂的...

    《Android应用开发揭秘》附带光盘代码.

     1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android开发环境搭建  2.1 Android开发准备工作  2.2 开发包及其工具的安装和  配置  2.2.1 安装JDK和...

    《Android应用开发揭秘》源码

     1.1.3 Android应用程序框架  1.2 OMS介绍  1.2.1 OPhone介绍  1.2.2 Widget介绍  1.3 小结  第2章 Android开发环境搭建  2.1 Android开发准备工作  2.2 开发包及其工具的安装和配置  2.2.1 安装JDK和配置...

    Google Android SDK开发范例大全(第3版)

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    Google Android开发入门与实战.part1.rar

    6、android应用程序结构介绍 7、良好的学习开端 8、android的数据存储操作 9、Internet和Broadcast面对面 10、Service应用实例 11、开发android应用的基本步骤 12、android综合案例一 13、android综合案例二 14、...

    Google Android开发入门与实战.part2.rar

    6、android应用程序结构介绍 7、良好的学习开端 8、android的数据存储操作 9、Internet和Broadcast面对面 10、Service应用实例 11、开发android应用的基本步骤 12、android综合案例一 13、android综合案例二 14、...

    Google Android开发入门与实战.part3.rar

    6、android应用程序结构介绍 7、良好的学习开端 8、android的数据存储操作 9、Internet和Broadcast面对面 10、Service应用实例 11、开发android应用的基本步骤 12、android综合案例一 13、android综合案例二 14、...

    Google Android SDK开发范例大全(完整版)

    Android 应用程序中一项流行的技术是链接到 Google 地图,以便在应用程序中显示地址。Android 软件栈还提供对基于位置的服务(例如 GPS)和加速计的支持,不过并不是所有的 Android 设备都配备了必需的硬件。另外...

    Google Android SDK开发范例大全(第3版).pdf

    《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计...

    数据集-《Google Play应用程序》

    数据集中有13个特征,每个特征都显示了谷歌应用程序名称、类别、评级、评论、大小、安装、类型、价格、内容评级类型、最近更新、当前版本和Android版本的一些细节。 App:应用程序名称。 类别:应用程序所属的类别。 ...

    《Google Android开发入门与实战》.pdf

    第6章 磨刀不误砍柴工——android应用程序结构介绍 57 6.1 android体系结构介绍 57 6.1.1 应用程序(application) 57 6.1.2 应用程序框架(application framework) 58 6.1.3 库(libraries)和运行环境...

    Google Android SDK开发范例大全源码 无解压密码

     本书讲述由浅入深,由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的开发者和Android的进阶程序开发者学习。 csdn 另外一个版本有解压时需要密码,本资源无解压密码。

    Android应用开发揭秘pdf高清版

    1.1.3 Android应用程序框架 1.2 OMS介绍 1.2.1 OPhone介绍 1.2.2 Widget介绍 1.3 小结 第2章 Android开发环境搭建 2.1 Android开发准备工作 2.2 开发包及其工具的安装和 配置 2.2.1 安装JDK和配置Java开发 环境 ...

    Google Android程序设计指南-源码

    Android应用程序采用Eclipse (月蚀) 开发集成环境为其开发平台,您可以参考本书的第二章先了解如何安装Eclipse后,再依照下列步骤汇入示范源代码。 Step 1. 汇入示范源代码 在Eclipse开发集成环境的菜单中,选择File...

    Google Android SDK开发范例大全(第3版) 4/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

    Google Android SDK开发范例大全(第3版) 3/5

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签 3.2 更改手机窗口画面底色 3.3 更改TextView文字颜色 3.4 置换TextView...

Global site tag (gtag.js) - Google Analytics