分享

什么是intent?

 wanwanstudy 2012-02-11

什么是Intent

Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION请求给AndroidAndroid 会根据Intent的内容,查询各组件注册时的声明的IntentFilter,找到网页浏览器Activity来浏览网页。

Android有三个基本组件--Activity,Service,BroadcastReceiver,它们都是通过Intent机制激活的,而不同类型的组件有不同的传递Intent的方式。

1.要激活一个新的Activity,或者让现有的Activity执行新的操作,可以通过调用Context.startActivity()或者Activity.startActivityForResult()方法。这两个方法需要传入的Intent参数也称为Activity Action Intent,根据Intent对象对目标Activity描述的不同,来启动与之匹配的Activity或传递信息。

2.要启动一个新的服务或者向一个已有的服务传递新的指令,调用Context.startService()方法或者调用Context.bindService()方法将调用此方法的上下文对象与Service绑定。

3.通过Context.sendBroadcast()Context.sendOrderBroadcast()Context.sendStickBroadcast()这三个方法可以发送BroadcastIntentBroadcastIntent发送后。所有已注册的拥有与之相匹配的IntentFilterBroadcastReceiver就会被激活。这种机制广泛运用于设备和系统状态变化的通知。一个常见的例子是,当Android的电池电量过低时,系统就会发送ActionBATTERY_LOW的广播,接着任何可匹配该ActionIntentFilter注册的BroadcastReceiver都会各自运行自己自定义的处理代码,比如关闭设备的WIFIGPS以节省电量。

Intent一旦发出,Android都会准确的找到相匹配的一个或多个ActivityServiceBroadcastReceiver作为响应。所以不同类型的Intent消息不会发生重叠:BroadcastIntent消息只会发送给BroadcastReceiver,startActivity()传递的消息只能送给Activity,由startService()传递的Intent只能发送给service

 

如何解析Intent

对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”,对于没有明确指出目标组件名称的Intent,我们称之为“隐式Intent”。Android系统使用IntentFilter来寻找与隐式Intent相关的对象。

 

IntentFilter

应用程序的组件为了告诉Android自己能响应、处理哪些隐式Intent请求,可以声明一个甚至多个IntentFilter

<intent-filter>

<action android:name="android.Intent.Action.MAIN"/>

<category android:name="android.Intent.Category.LAUNCHER"/>

</intent-filter>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多