`

Activity 、Intent深入解析

 
阅读更多

学习Android SDK有段时间了,对Activity 、Intent的学习与使用都比较了解。第一次完整的学习Activity 、Intent后,我就感觉这似乎与Windows COM技术有些似曾相识的感觉,写了一篇将Activity 与 COM做了比较,但是一直感觉意犹未尽,前几天在程序员杂志中看到一篇经典的文章,茅塞顿开。

声明:源文章来源于程序员2008年的第一期杂志,本人将这篇文章整理后与大家分享。

首先我们来了解一个概念:Mash-up。

什么是Mash-up?

举个简单的例子:从一个网页上抓下一块XHTML 数据,再从另一个Web Services 那里获得一些XML数据,就可以把这两块数据mash-up起来,形成新的XML数据,并且这一数据可以在此被别人mash-up。

Android、Intent的深入解析

在Android软件环境中,应用程序是由一组Activities 组成的,而每一个Activity 不但是本应用的组成部分,而且也对外开放,可以向同一系统内任何一个外部应用提供服务。例如,编制手机短信无疑需要一个小型编辑器,这个编辑器在Android中由一个Activity 实现,并且可以以构件的形式暴露出来。如果开发者在开发另外一个应用程序的过程中需要一个小型编辑器,则无须重新开发,可直接调用短信应用中的这个编辑器Activity 得以实现。这种多层次的组合能力,与Web 2.0 基于XML的mash-up如出一辙。

Android 调用activity 所提供的接口(服务),并不是直接调用,而是借助一个叫做Intent 的机制实现的。所谓intent 就是对于服务的调用请求。与其他技术体系不同的是,Android可以无须明确地指定要那个组(activity)来满足自己的调用请求,而是可以要求系统根据它的要求,自动选择一个能够满足要求的activity 来提供所需的服务。

大致的过程如下:每一个activity 都可以对外提供一系列的服务,这些服务以Intent-filter 的形式对外公开,并提交给系统进行注册。所谓intent-filter,就是一个activity 的能力列表。例如,一个用于编辑短信正文的文本编辑器activity 应通过AndroidManifest.xml文件中的<intentfilter>元素向系统注册,表明activity具有EDIT 和VIEW文本数据的能力,如果有另一个客户要求EDIT和VIEW一段文本数据,则系统可以调用本activity 予以满足。Activity 本身既是提供服务的组件,也可以是组件的客户。

例如一个备忘录应用中,应用启动时可以显示一个现有备忘录的列表,这是由一个activity 实现的。而当用户选择编辑或新建一个备忘时,这个activity 需要一个文本编辑器activity 来完成这项工作。它怎么做呢?当然不需要自己从头开发一个,而只需要以intent 的方式告诉系统说:“我需要一个具有编辑文本能力的activity 来帮我编辑一个备忘信息”,系统会自动寻找在<intentfilter>中声称具有该项能力的activity,然后激活这个activity,用来满足这个intent。

Windows平台的开发人员会发现,上述的工作方式与COM 很相近,2者的比较如下图所示:

Android-COM

Mush-up的作用

如果Android 平台提供的基础构件足够丰富,则开发新的应用程序将变得高度简化:开发者可以利用现Activities 快速组合出应用程序的主体,只有程序的特色功能需要亲自实现,这无疑极大地提升了生产力和软件质量。不但如此,新实现的Activities 也可以作为其他应用的构件而被再次组合。

总结说明

Mash-up 是Web 2.0 平台上的关键技术概念之一。Android 平台在技术上的最大亮点,就是将mash-up 技术引入了手机操作系统。实际上以现有成熟构件为基础,通过组合方式快速构造和开发新应用,这样的想法并非Android 首创,在Windows系统中的COM技术就是这种思想的体现。

Android之父曾经特别强调过:Android吸收了从COM构件体系到Web 2.0等技术体系的思想精髓,实现了多处技术创新,其中尤以应用程序级别的mash-up为最令他自豪的特性。

分享到:
评论

相关推荐

    Android笔记(3)---Activity和Intent

    Intent的解析和匹配则涉及到IntentFilter的比较算法,这是Android系统实现组件间通信的关键部分。 总结来说,Activity是Android应用程序的基本视图单元,Intent则是组件间通信的桥梁。掌握Activity的生命周期管理和...

    Activity启动模式及Intent的Flag属性对Intent传值的影响

    本篇将深入探讨`Activity`的启动模式和`Intent`的`Flag`属性对`Intent`传值的影响。 1. **Activity启动模式**: - **Standard**(标准模式):默认模式,每次启动新的实例,无论当前栈中是否存在该Activity。 - *...

    ex07_activity_intent.rar_Intent_android

    "ex07_activity_intent"这个压缩包文件很可能包含了一系列关于Android中Intent使用的教程或示例代码,让我们来深入探讨Intent的概念、类型以及如何在实际应用中使用它。 1. **Intent的概念**: Intent是一个对象,...

    Android的Intent实验

    8. **Intent解析** 当收到一个隐式Intent时,系统会检查所有已注册的组件,判断它们是否能够处理这个Intent。组件通过声明Intent过滤器(Intent Filter)来表明它们可以处理哪些Intent。过滤器包含动作、数据URI、...

    用intent切換兩個activity

    在标签“源码”和“工具”的提示下,我们可以深入到Android系统的源码层面,了解Intent是如何被解析和分发的。在Android系统中,`ActivityManagerService`是负责处理Intent的主要组件,它会根据Intent的属性找到合适...

    intent匹配规则大总结

    本文将围绕给定文件提供的信息,深入解析Intent匹配规则的关键点,并结合具体示例帮助理解。 #### 一、Intent与Activity的匹配基础 Intent与Activity之间的匹配基于`&lt;intent-filter&gt;`标签进行配置。`&lt;intent-...

    Intent系统调用示例

    本篇文章将详细解析“Intent系统调用示例”,并结合提供的IntentDemo项目进行深入探讨。 1. **Intent的基本概念** Intent是一个消息对象,它封装了应用程序想要执行的操作以及操作所需要的数据。在Android中,...

    android intent 的生命周期讲解和历程

    本文将深入解析Intent的生命周期,并结合源码进行详细讲解。 首先,理解Intent的基本概念。Intent是一个消息对象,它封装了执行操作的信息,如启动一个Activity或者Service。Intent主要有两种类型:显式Intent和...

    Intent的启动

    本文将深入解析Intent的启动过程及其在Android应用开发中的关键作用。 一、Intent的基本概念与类型 Intent是Android系统中的一种消息对象,它封装了应用程序想要执行的操作和操作所需的数据。Intent主要有两种类型...

    Android应用源码之Intent_Intent.zip

    本资源包“Android应用源码之Intent_Intent.zip”应该包含了关于Intent使用的一些示例代码和解析,帮助开发者深入理解Intent的工作原理。 1. **Intent的类型** Intent主要有两种类型:显式Intent和隐式Intent。...

    Android activity intent 相关Java源代码

    在这个“Android activity intent 相关Java源代码”压缩包中,我们可以深入理解Activity和Intent的内部机制。 首先,Activity是Android四大组件之一,它是用户与应用交互的窗口。在Java源码中,我们可以看到...

    android各组件详解- Intent.

    ### 深入解析Intent #### ComponentName - Intent中的`ComponentName`属性可以显式指定目标组件的类名,当该属性设置时,系统将直接调用指定组件,忽略其他筛选条件。 #### Action - `Action`字段描述了待执行的...

    Intent实例

    本篇文章将深入探讨“Intent实例”,尤其是针对“简单Intent实例”的理解和应用。 首先,Intent分为显式Intent和隐式Intent两种类型。显式Intent明确了要启动的目标组件(Activity或Service),通过指定其完全限定...

    Intent学习

    【Intent学习】 Intent是Android系统中的一个核心概念,它是应用程序之间通信的重要桥梁,用于在不同的组件之间传递...通过深入学习Intent,开发者可以更好地驾驭Android平台,构建出功能强大、易于扩展的应用程序。

    Android intent原理分析

    ### Android Intent原理深入解析 #### 一、概览与引言 在移动开发领域,特别是在Android平台上,**Intent**作为核心通信机制之一,扮演着关键角色。它不仅用于应用程序内部不同组件之间的通信,也是实现跨应用通信...

    038集-Intent类的重要成员变量

    本教程将深入探讨Intent类的一些核心成员变量,帮助开发者更好地理解和利用Intent来构建功能丰富的Android应用。 1. **Intent类的创建与分类** - `Intent` 类可以通过构造函数初始化,比如 `Intent(context, Class...

    Android中的Intent对象完全解析

    以下是关于Intent对象的深入解析: 1. **Intent的作用**: Intent是一个动作的抽象描述,它作为参数传递,帮助完成Android组件间的通信。Intent主要有两个核心用途:启动Activity和Service。它就像是Android系统中...

    intent使用源码

    当我们调用Activity的`startActivity(Intent)`或Service的`startService(Intent)`方法时,系统会通过PackageManager服务解析Intent,寻找能够处理该Intent的组件。解析过程中,系统会根据Intent的动作、数据、类别等...

    Andriod Intent使用代码举例

    Android Intent是Android系统中用于组件间通信的重要机制,它能够启动或启动新的Activity,传递数据,甚至触发Service。...通过阅读提供的"Intent使用代码"文件,可以更深入地了解Intent的具体实现和用法。

    Android Intent 学习

    - 目标Activity接收到Intent后,解析出操作数和运算符,执行计算并返回结果。 - 结果可以再通过Intent返回,或者使用BroadcastReceiver广播方式通知原Activity。 7. **IntentFilter与BroadcastReceiver** - ...

Global site tag (gtag.js) - Google Analytics