Android中Intent的概念?

时间:2010-04-07 01:17:38

标签: android android-intent

我真的不了解Intent的用法和概念。我理解一个活动是一个可视化界面和一个用户可以参与的努力。我认为一个意图用于在不同活动之间启动和交流。如果是这样,那你将如何实现呢?代码示例会很有帮助。以类比的形式,尝试将意图与日常生活中的某些事物进行比较。这非常有用!

8 个答案:

答案 0 :(得分:6)

引用API docsIntent基本上是被动数据结构,其中包含 要执行的操作的抽象描述 ,包含两个主要信息,行动和数据。

在最基本的层面上,Intent可以看作是一个你可以告诉Android调用的动作 - 会发生什么取决于为该动作注册的内容。

Intent的操作部分是字符串或字符串常量,数据部分是表示URI的字符串。除了这些主要属性之外,您还可以通过额外添加新属性,这只是键值对的映射。

有关详细信息,请参阅Intents and Intent FiltersIntent课程或Playing with Intents

我还推荐书籍Pro Android,该书详细介绍了这些API详细信息。有一个名为Pro Android 2的新版本(尚未阅读)。

如果您搜索Google Books for it,可以查看该书的摘录,请参阅第3章“使用资源,内容提供商和意图”了解更多信息。

答案 1 :(得分:5)

Intent可用于通过提供操作和一些数据来启动活动。使用Intent操作查看网页的示例:

Intent myIntent = new Intent(Intent.VIEW_ACTION,
                  Uri.parse("http://www.google.com"));

操作的位置为Intent.VIEW_ACTION且数据字符串为Google网站的Uri

Common Tasks and How To Do Them in Android

我尝试过,但很难将Intent与日常生活中的某些东西进行比较。如果我拿出一些东西,我会用我的答案记下来。

答案 2 :(得分:3)

我发现意图非常熟悉,尤其是在应用程序集成方面的一些经验。意图基本上是消息,Android意图/活动对是message based architecture使用异步消息同时具有单个和多个转换,保证交付(我相信),但不保证订购。

基于消息的交互的美妙之处在于,您可以根据代码依赖性(它们只需要知道共享的意图类型及其有效负载)以及它们的生命周期(Android就像我一样)将活动相互分离。了解它是免费停止和恢复消息交易中的任何一方)。这使得维护和修改活动,重用现有活动以及允许有效使用资源变得更加容易。

答案 3 :(得分:1)

意图本质上是一种宣称需要的应用程序。这些与IntentFilters结合使用,它们基本上是对另一个Activity或Service可以为任何人需要的功能的声明。

意图通常由两部分构成,一种信息和一种数据组件,通常是一个URI(想想网站,GPS数据或拨打联系人)。

要使用Intent,您必须使用此类信息和数据创建您的意图,然后将其分派给另一个Activity,Service或Broadcast Receiver,然后通常绑定Intent并执行您请求的某种操作。< / p>

Android API详细说明了如何构建自己的IntentFilters和Receivers的细节。看那里了解更多信息。

答案 4 :(得分:1)

假设你的朋友被关在两个房间里,有两个房间,没有门,没有屋顶,你想给他一些他需要的东西。所以你要做的就是把它放在你房间的公共墙上,这样他就可以把它放在另一边。     可能你会在意图(在某些活动中)转储一些全局的onfo并从另一方获取该信息(在下一个活动中)。

答案 5 :(得分:1)

根据我的理解,简单的现实世界的例子, 发送邮件的传统方式,即邮政服务,你在信封上有一封带发件人和收件人签名的信件(封面和邮票可以被认为是背景 - 如果我没有错),并且可以想到里面的实际信件作为数据,邮递员携带的总字母(封面+实际字母数据)总体上是意图,邮递员是操作系统:) 希望这能给出一些想法。

答案 6 :(得分:0)

你说得对,就是在应用程序之间启动和通信。

http://developer.android.com/guide/topics/fundamentals.html

具有Intents的基础知识。如果需要返回值,则需要使用.startActivityForResult()而不是startActivity(),并且在返回值时使用void onActivityResult(Intent intent)方法作为侦听器。

构造函数需要2个部分。第一个是int,它将成为Intent类中的常量,用于告诉系统您要对数据执行的操作。第二个是在活动之间传递数据的URI。然后系统使用它们来决定将它放入活动请求时应该传递给哪个App。至于你的类比,我不知道,那有点困难,没有什么比这更像。我想你最接近的就是给你的老板一些东西并告诉他你需要别人用它来做你不能做的事情。

答案 7 :(得分:0)

开发指南中的Application Fundamentals将意图定义为“异步消息”。

也许为了更好地理解它们与“消息”的区别,可以将它们与Microsoft Windows世界中的WM_COMMAND消息进行比较,因为根据定义它们应该启动一个动作(而不是仅传递信息)。