`

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经典文章

    Android之父深入解析Android Activity 、Intent深入解析

    Android代码-Android 一些重要知识点解析整理

    Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系 Android消息循环分析 Android Activity developer 官网 (强烈推荐 dev guide) Android的启动模式(android:launchMode) ...

    深入解析Android系统中应用程序前后台切换的实现要点

    即使这个Activity是定义在别一个应用程序里的,比如说,想要给用户展示一个地图的信息,现在已经有一个Activity可以做这件事情,那么现在你的Activity需要做的就是将请求信息放进一个Intent对象里,并且将这个Intent...

    Andorid-Activity生动概解&用法&常见问题汇总

    Activity1.何为活动?2.活动的生命周期2.1活动管理:返回栈2.2活动状态2.3活动的生命周期3.如何使用活动3.1创建一个活动3.2 Layout解析3.3活动的运行效果:4.活动之间如何进行跳转4.1Toast4.2 界面之间跳转的两种方式...

    计算机毕业设计 - Android系统原理与开发要点详解-培训课件,保证可靠运行,计算机毕业生可参考,免费资源下载

    通过深入解析这些组件的交互方式和工作原理,帮助开发者更好地理解Android系统的底层逻辑。 接着,课件详细讲解了Android开发的关键技术和要点,包括Activity和Service的生命周期管理、Intent和BroadcastReceiver的...

    Android典型技术模块开发详解

    6.4 AIDL深入练习 6.4.1 服务端实现 6.4.2 客户端实现 6.5 系统服务 6.5.1 获得系统服务 6.5.2 获取屏幕分辨率 6.5.3 剪贴板服务 6.5.4 电话服务 6.5.5 定时提醒服务 6.5.6 音频服务 6.5.7 传感器服务 6.5.8 位置...

    深入AndroidManifest.xml文件解析详解

    除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)二、AndroidManifest.xml结构&lt;?xmlversion=”1.0\u2033encoding=

    疯狂Android讲义源码

     第4章 深入理解Activity 169  4.1 建立、配置和使用Activity 170  4.1.1 建立Activity 170  4.1.2 配置Activity 177  4.1.3 启动、关闭Activity 179  4.1.4 使用Bundle在Activity之间  交换数据 181  4.1.5...

    android开发入门与实战(下)

    7.5 Android应用的灵魂——Intent和Activity介绍与实例 7.5.1 实例操作演示 7.5.2 实例编程实现 7.6 用好列表,做好程序——列表(ListView)介绍与实例 7.6.1 实例程序演示 7.6.2 实例编程实现 7.7 友好地互动交流...

    android开发入门与实战(上)

    7.5 Android应用的灵魂——Intent和Activity介绍与实例 7.5.1 实例操作演示 7.5.2 实例编程实现 7.6 用好列表,做好程序——列表(ListView)介绍与实例 7.6.1 实例程序演示 7.6.2 实例编程实现 7.7 友好地互动交流...

    传智播客的android开发源代码

    35_Intent深入解剖.avi 所在项目:Intent 36_Activity生命周期.avi 所在项目:ActivityLife 37_采用广播接收者实现短信窃听器.avi 所在项目:SMSListener & Web端应用:web 38_采用广播接收者拦截外拔电话与其特性....

    Android开发艺术探索

    3.4.2 事件分发的源码解析 / 144 3.5 View的滑动冲突 / 154 3.5.1 常见的滑动冲突场景 / 155 3.5.2 滑动冲突的处理规则 / 156 3.5.3 滑动冲突的解决方式 / 157 第4章 View的工作原理 / 174 4.1 初识View...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 ...

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

    3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 ...

    Google Android开发入门与实战的代码

    7.5 Android应用的灵魂——Intent和Activity介绍与实例 106 7.5.1 实例操作演示 106 7.5.2 实例编程实现 106 7.6 用好列表,做好程序——列表(ListView)介绍与实例 111 7.6.1 实例程序演示 111 7.6.2...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 ...

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

    7.5 android应用的灵魂——intent和activity介绍与实例 106 7.5.1 实例操作演示 106 7.5.2 实例编程实现 106 7.6 用好列表,做好程序——列表(listview)介绍与实例 111 7.6.1 实例程序演示 111 7.6.2...

    source.zip

    35_Intent深入解剖.avi 所在项目:Intent 36_Activity生命周期.avi 所在项目:ActivityLife 37_采用广播接收者实现短信窃听器.avi 所在项目:SMSListener & Web端应用:web 38_采用广播接收者拦截外拔电话与其特性....

Global site tag (gtag.js) - Google Analytics