Android Intent

Intent简介

  • Intent是一种消息传递机制。

  • 通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。

  • Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的。

    1.1 要激活一个新的Activity,或者让一个现有的Activity做新的操作,可以通过调用Context.startActivity()或者Activity.startActivityForResult()方法。
    1.2 要启动一个新的Service,或者向一个已有的Service传递新的指令,调用Context.startService()方法或者调用Context.bindService()方法将调用此方法的上下文对象与Service绑定。
    1.3 Context.sendBroadcast()、Context.sendOrderBroadcast()、Context.sendStickBroadcast()这三个方法可以发送Broadcast Intent。发送之后,所有已注册的并且拥有与之相匹配IntentFilter的BroadcastReceiver就会被激活。

Intent描述的基本内容

  • Intent对象抽象地描述了要执行的操作,其描述的基本内容可以分为:
    组件名称
    Action
    Action描述Intent所触发动作名字的字符串。系统对常见的Activity和Broadcast进行了定义。例如:ACTION_CALL、ACTION_TIME_TICK等
    Data
    Data描述Intent要操作的数据URI和数据类型。例如对于ACTION_CALL,对应的数据可以是tel://格式的电话号码URI。
    Category
    Category是对被请求组件的额外描述信息。
    Extra
    Flag

解析Intent

  • 显式Intent和隐式Intent

  • 显式Intent明确指出了目标组件的名称,相反没有给出目标组件名称的Intent都为隐式Intent。

  • 在Android系统中,使用IntentFilter来找寻与隐式Intent相关的对象。

  • 显式Intent方便,但是对于开发者而言,有的时候并不能明确目标组件的名称,所以必须通过隐式Intent来查找,而对于内部组件来说,显式Intent要更为方便。

隐式Intent的匹配

实现过程:

  • Android将Intent的请求内容和IntentFilter的过滤器进行比较,IntentFilter中包含系统中所有可能的待选组件。

  • 如果IntentFilter中某一组件匹配隐式Intent请求内容,那么Android就该组件作为目标组件。

  • Android只选用Action、Data和Category作为参考因素,Extra和Flag并不起作用

PendingIntent

  • PendingIntent 可以看作是对intent的包装,通常通过getActivity,getBroadcast ,getService来得到 pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。

  • PendingIntent可以看作是对Intent的包装。PendingIntent主要持有的信息是它所包装的Intent和当前Application的Context。正由于PendingIntent中保存有当前Application的Context,使它赋予带他程序一种执行的Intent的能力,就算在执行时当前Application已经不存在了,也能通过存在PendingIntent里的Context照样执行Intent。

作者:张俊强
原文链接点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值