android学习笔记(6)Intent 和 IntentFilter

2014-12-3 8:13:56     17 人阅读    

         简单地说,Intent并不是Android应用的标准组件,具体的说,他应该属于通信组件,专用用来让android 组件之间进行通信的,但它对于Android应用的作用非常大—— 它是Android应用内不同组件之间通信的载体。当Android运行时需要连接不同的组件时, 通常就需要借助于Intent来实现。Intent可以启动应用中的另一个Activity,也可以启动一个 Service组件,还可以发送-条广播消息来触发系统中的BroadcastReceiver。也就是说, Activity、Service、BroadcastReceiver三种组件之间的通信都以Intent作为载体,只是不同组件使用Intent的机制略有区别而已。

 

          当需要启动一个 Activity 时,可调用 Context 的 startActivity (Intent intent)方法,该方法中的Intent参数封装了需要启动的目标Activity的信息。


           当需要启动一个 Service 时,可调用 Context 的 startService(lntent intent)方法或 bindService<lntent service, ServiceConnection conn, int flags)方法,这两个方法中 的Intent参数封装了需要启动的目标Service的信息。

 

         当需要触发一个BroadcastReceiver时,需要调用Context的sendBroadcast(lntent intent)、sendStickyBroadcast(lntent intent)或 sendOrderedBroadcast(lntent intent, String receiverPermission)方法来发送广播消息,这三个方法中的Intent参数封装了需要触发的BroadcastReceiver的信息。

 

         通过上面的介绍不难看出,Intern封装了当前组件需要启动或触发的目标组件的信息,因此有些书上把Intent翻译为“意图”。实际上Intent对象里封装了大量关于目标组件的信息, 本系列android教程后面还会更详细地介绍Intent所封装的数据,此处不再深入讲解。

 

          当一个组件通过Intent表示了启动或触发另一个组件的“意图”之后,这个怠图可分为 两类。
         显式Intent:显式Intent明确指定需要启动或者触发的组件的名称。
         隐式Intent:隐式Intent只是指定需要启动或者触发的组件应满足怎样的条件。

        对于显式Intent而言,Android系统无须对该Intent做任何解析,系统直接找到指定的目 标组件,启动或触发它即可。
        对于隐式Intent而言,Android系统需要对该Intent进行解析,解析出它的条件,然后再去系统中查找与之匹配的0标组件。如果找到符合条件的组件,就启动或触发它们。

       那么Android系统如何判断被调用组件是否符合隐式Intent呢?这就需要靠IntentFilter 来实现了,被调用组件可通过IntentFilter来声明fl己所满足的条件——也就是声明自己到底 能处理哪些隐式Intent。关于Intent和IntentFilter后面还会有进一步阐述,此处不再深入 讲解。

 


原文地址:http://www.itmmd.com/201412/248.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android学习笔记(7) andorid View与 andorid ViewGroup详解   上一篇
下一篇  linux命令详解(7)检测已经安装的rpm软件包

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!