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。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值