Android 中各个组件主要是通过Intent来通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
Intent 作用:
An intent is an abstract description of an operation to be performed. It can be used with startActivity to launch an Activity, broadcastIntent to send it to any interested BroadcastReceiver components, and startService(Intent) or bindService(Intent, ServiceConnection, int) to communicate with a background Service.
An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed. The primary pieces of information in an intent are:
1.startActivity
2. broadcastIntent
3.startService()
4.bindService()
组件之间通讯和进程间通讯,减低耦合性。
Intent 各个属性1. action (动作) 是要执行的动作(action)的一个简要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android为我们定义了一套标准动作。The general action to be performed
2. data是执行动作要操作的数据(data),Android中采用指向数据的一个URI来表示 The data to operate on
3. category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent被加进ALTERNATIVE intent列表里面,用户可以启动,it should be included in a list of alternative actions the user can perform on a piece of data.
4. type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
5. component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
6. extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
Android如何解析Intent
在应用中,我们可以以两种形式来使用Intent:
显式Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。
隐式Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。
Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:
1.如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;
2.如果Intent没有提供type,系统将从data中得到数据类型。和action一样,如果Intent指明定了type,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。
3.如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。
4.如果Intent指定了一个或多个category,这些类别必须全部出现在组件的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。Activities will very often need to support the CATEGORY_DEFAULT so that they can be found by Context.startActivity().
5.如果category 指定了ALTERNATIVE and SELECTED_ALTERNATIVE.则可以通过queryIntentActivityOptions(ComponentName, Intent[], Intent, int),查询Activity的action,addIntentOptions(int, int, int, ComponentName, Intent[], Intent, int, MenuItem[])增加action等信息。
Intent 的研究离不开IntentFilter.
总结:利用Intent所实现的软件复用的粒度是Activity/Service,耦合也更为松散。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
Intent 作用:
An intent is an abstract description of an operation to be performed. It can be used with startActivity to launch an Activity, broadcastIntent to send it to any interested BroadcastReceiver components, and startService(Intent) or bindService(Intent, ServiceConnection, int) to communicate with a background Service.
An Intent provides a facility for performing late runtime binding between the code in different applications. Its most significant use is in the launching of activities, where it can be thought of as the glue between activities. It is basically a passive data structure holding an abstract description of an action to be performed. The primary pieces of information in an intent are:
1.startActivity
2. broadcastIntent
3.startService()
4.bindService()
组件之间通讯和进程间通讯,减低耦合性。
Intent 各个属性1. action (动作) 是要执行的动作(action)的一个简要描述,如VIEW_ACTION(查看)、EDIT_ACTION(修改)等,Android为我们定义了一套标准动作。The general action to be performed
2. data是执行动作要操作的数据(data),Android中采用指向数据的一个URI来表示 The data to operate on
3. category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent被加进ALTERNATIVE intent列表里面,用户可以启动,it should be included in a list of alternative actions the user can perform on a piece of data.
4. type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
5. component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
6. extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
Android如何解析Intent
在应用中,我们可以以两种形式来使用Intent:
显式Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。
隐式Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。
Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,Android是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下:
1.如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配;
2.如果Intent没有提供type,系统将从data中得到数据类型。和action一样,如果Intent指明定了type,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。
3.如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。
4.如果Intent指定了一个或多个category,这些类别必须全部出现在组件的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。Activities will very often need to support the CATEGORY_DEFAULT so that they can be found by Context.startActivity().
5.如果category 指定了ALTERNATIVE and SELECTED_ALTERNATIVE.则可以通过queryIntentActivityOptions(ComponentName, Intent[], Intent, int),查询Activity的action,addIntentOptions(int, int, int, ComponentName, Intent[], Intent, int, MenuItem[])增加action等信息。
Intent 的研究离不开IntentFilter.
总结:利用Intent所实现的软件复用的粒度是Activity/Service,耦合也更为松散。
发表评论
-
Android的SoundPool类使用与利弊
2011-01-12 11:08 1107在开发Android软件中我们可能经常需播放多媒体声音文件,一 ... -
Android本地应用程序应用方式介绍
2011-01-11 17:57 697在我们曾经介绍的一片关于Android系统架构基本模式解析的文 ... -
android 轻松实现语音识别
2011-01-07 15:45 1368苹果的iphone 有语音识别用的是Google 的技术,做为 ... -
呼叫转移设置
2011-01-07 15:25 1192知电信网络提供商,你将呼叫转移了,转移到什么号码了。 所以这个 ... -
Android ExpandableListActivity 学习笔记(转载)
2011-01-07 10:56 1233An activity that displays an ex ... -
Wifi定位的原理是什么?
2011-01-07 10:33 1614与手机基站定位方式类 ... -
[Android 数据库] Android数据库总结
2011-01-07 10:05 1142任何的软件开发都离不 ... -
Intent Filter匹配
2011-01-07 10:01 625应用程序的组件为了告诉Android自己能响应、处理哪些隐式I ... -
Android权限说明
2011-01-07 09:59 700Android权限分的很细,但 ... -
详解Android组件的使用(转
2011-01-07 09:58 546Android开发平台是开放的 ... -
AsyncTask解决Android UI堵塞问题
2011-01-07 09:58 947平时我们在开发Andr ... -
消息机制细谈(message handler looper MessageQueue)
2011-01-07 09:54 762在handler的简单用法中, ...
相关推荐
Android Activity和Intent机制学习笔记
Intent消息传递是一种组件间运行时绑定的机制. intent是Intent对象, 它包含了需要做的操作的描述, 或者, 对于广播来说, 包含了正在通知的消息内容. 对于向这三种组件发送intent有不同的机制: 使用Context.start...
Android+Intent机制实例详解 Android+Intent 大家不得不看啊!
Android+Intent机制实例详解.rar,详细的介绍了,android中的intent知识,可以下载下来看看哟
通过一个实验,讲解Android的使用方法,总结详细
Intent的示例,详细的注释,详细讲解了startActivityForResult的用法,以及Bundle跟Intent保存对象的机制.
Android Intent机制实例详解,讲的比较详细,与大家分享,也是想得到积分呵呵。
Android Activity和Intent机制
Android 广播大全 Intent Action 事件是 Android 系统中的一种核心机制,用于在应用程序之间传递信息和事件通知。 Intent 是一种轻量级的消息对象,用于描述一个操作的请求或描述一个事件。 以下是 Android 广播...
Android_Activity和Intent机制学习笔记
Android Activity和Intent机制,讲得十分详细。
Android 广播事件 Intent Action 是 Android 系统中的一种机制,用于在应用程序之间进行通信和交互。Intent.ACTION 是 Android 中的一种动作,用于描述一个具体的操作或行为。 以下是 Android 广播事件 Intent ...
Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法 是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。 Intent这个英语单词的本意是“目的、意向”等...
Android+Intent机制实例详解[文].pdf
最近在进行android开发过程中,...Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动 作、动作涉及数据、附加数据进行描述,Android则根据此I
Android应用程序中消息传递方法Intent机制研究.pdf
学习intent机制,直接可以运行,通过intent跳转到打电话界面,通过intent跳转到发短信界面,简单方便。
Android 系统广播大全 Intent 跳转界面是一种机制,允许应用程序之间进行交互和通信。Intent 是 Android 中的一种机制,可以将动作和数据封装起来,用于启动 Activity、服务或广播接收器。下面是 Android 系统广播...
对于初学者来说,学习完UI组件,就要学习安卓一些基本组件与机制了。。
参考...,讲解的很好 1.什么是Intent(定义) Intent这个单词的意思就是”意图,目的,意向”,Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。 个