【转】Activity 、Intent深入解析

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

原文地址:http://www.moandroid.com/?p=1084


学习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文件中的 元素向系统注册,表明activity具有EDIT 和VIEW文本数据的能力,如果有另一个客户要求EDIT和VIEW一段文本数据,则系统可以调用本activity 予以满足。Activity 本身既是提供服务的组件,也可以是组件的客户。

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

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

activity

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基础】Activity启动模式以及Intent Flags 与 栈 的全面解析 Android开发的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制。 Intent主要用于2种情景下:发起意图 、广播其底层实现原理不在此篇文章的讨论范围,以后会陆续更新上的。 下面我就根据近期学习,总结记录下Activity启动模式 及 Intent Flags 与 栈 的关联分析。1、首先我们先搞清楚什么是栈:栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像 阅读详情

相关推荐

intent的常用方法

intent的常用方法 IntentAndroid中的几种用法 文章分类:综合技术

ActivityIntent深入解析

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

arm10504的专栏 634

python文本爬虫(爬好-看-视频网站)下载急用

环境:python3.7+wingide 建议:有一定python基础 需要文本爬虫处理网站的 可直接下载即可运行

Android学习笔记——第一章 Activityintent

Android学习笔记——第一章 Activityintent 活动(activity)是什么? Activity活动存在于android中,是所有程序的根本.........

white_mvlog的博客 1593

5、四大组件之一-ActivityIntent

一、Activity的定义及作用 1)官方定义:ActivityAndroid应用程序提供交互界面的一个重要组件 。也是Android最重要的组件之一 2)Activity是业务类 , 是承载应用程序的界面以及业务行为的基础 。 包括UI , Service ...... 类似于我们的JavaBean 3)“脸”的表现都靠Activity了 。 4)说Activity就不...

dianwei5413的博客 271

Android学习-基础知识(ActivityIntent

目录 1.四大组件 2.原始代码介绍: 3.Activity基本用法(参考第一行代码2.2部分) 3.1手动创建activity 3.2创建和加载布局 3.3在AndManifest文件中注册 3.4在activity中使用Toast(提醒) 3.5在activity中使用Menu 3.6销毁一个activity Intent android 分为四层架构:Linux内核层(为硬件设备提供底层驱动),系统运行层(为系统提供特性支持),应用框架层(构建程序使用的API),应用层(手...

weixin_42133317的博客 933

[Android学习笔记] -- ActivityIntent

刚看完ActivityIntent的教程视频,记下了关于什么是ActivityIntent以及一些示例代码。

Roy's Blog 1561

()ActivityIntent深入解析

ActivityIntent深入解析 By: 海市蜃楼 | In: Android开发 学习Android SDK有段时间了,对ActivityIntent的学习与使用都比较了解。第一次完整的学习ActivityIntent后,我就感觉这似乎与Windows COM技术有些似曾相识的感觉,写了一篇将Activity 与 COM做了比较,但是一直感觉意

gxj1680的专栏 438

{}ActivityIntent深入解析[醍醐灌顶]

<br /><br />学习Android SDK有段时间了,对ActivityIntent的学习与使用都比较了解。第一次完整的学习ActivityIntent后,我就感觉这似乎与Windows COM技术有些似曾相识的感觉,写了一篇将Activity 与 COM做了比较,但是一直感觉意犹未尽,前几天在程序员杂志中看到一篇经典的文章,茅塞顿开。<br />声明:源文章来源于程序员2008年的第一期杂志,本人将这篇文章整理后与大家分享。<br />首先我们来了解一个概念:Mash-up。什么是

a3015440的专栏 602

Activityintent解析

1.先从看的见的入手(Toast与Menu) Toast是一种android中一种非常好的提醒方式,它可以将一些短小的信息通知给用户,一段时间后自动消失,不会占用任何的屏幕空间。 Menu则可以大幅度帮我们节省屏幕空间,将菜单收缩。 具体实现 我们先在res目录下新建menu文件夹:右击res目录-New-Directory 再再menu文件夹下新建main菜单文件:右击menu文件夹-New-M...

weixin_43312313的博客 758

使用Intent来启动Activity并传递参数

要创建并显示一个Activity,可以调用sta

cxcbupt 3万+

ActivityIntent的使用

*应用场景:**适用于一些文章类的内容呈现页面,为了解决用户页面交互可能需要多次按返回键回到主页的场景(这种场景的发生,往往和系统通知栏打开页面有关,当然还有可能是特定的交互设计,希望快速回到任务栈中的特定页面),我们使用singleTop模式。**应用场景:**适用于app里面的大部分普通页面,打开一个新的页面,就创建一个Activity,由于标准启动模式的是最普通的模式,所以在使用场景这块,主要是看页面交互需求里,哪些不适合标准启动模式,我们要用新的启动模式替换标准启动模式。

2401_86454378的博客 1384

Android: 通过 intent 启动 Activity

通过 intent 启动 Activity Intent 种类 Exported 属性 Category 总结 Explicit Intent 启动 Activity Implicit Intent 启动Activity通过 intent 启动 ActivityIntent 种类 Intent 有两种: Explicit intents 显示意图 通过指定明确的包名和类名来启动一

KKkeep的专栏 1118

ActivityIntent、Service 三者的关系深度解析

"Intent实现了调用方与被调方的完全解耦,比如Activity不需要知道具体哪个Service会处理请求":"通过AndroidManifest的<intent-filter>声明,系统可以统一管理组件可见性":"基于Binder的Intent传递机制,使得APP间的组件调用成为可能":"PendingIntent等衍生设计支持通知栏等系统级交互"系统通过Activity栈管理导航(先进后出):用户交互的窗口单元(一个屏幕界面):Android应用的"门面担当":Android系统的"通信大使"

斗锋在干嘛的博客 1065

使用Intent启动Activity

Intent的最常用的用途是绑定应用程序组件。Intent用来在应用程序的Activity间启动、停止和传输。   这一章节中关于启动新的Activity的提示,也同样适用于Service。第8章可以了解到关于启动(和创建)Service的细节。   为了打开应用程序中不同的画面(Activity),调用startActivity,传入一个Intent,如下面的片段所示:

阳光灿烂的日子的博客 1822
上一篇: [转]Android之父深入解析Android
下一篇: 【转】Android DDMS详细使用说明
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值