Android中Intent简单介绍

来源:互联网 发布:程序员第一天上班干嘛 编辑:程序博客网 时间:2024/05/16 18:54

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

  • 当需要启动一个Activity时,可调用Context的startActivity(Intent intent)或者startActivityForResult(Intent intent,int requestCode)方法,这两个方法中的Intent参数封装了需要启动的目标Activity的信息。
  • 当需要启动一个Service时,可调用Context的startService(Intent intent)方法或者bindService(Intent service,ServiceConnect conn,int flags)方法,这两个方法中的Intent参数封装了需要启动的目标Service的信息。
  • 但需要触发一个BroadcastReceiver时,可调用Context的sendBroadcast(Intent intent)、sendStickyBroadcast(Intent intent)或sendOrderedBroadcast(Intent intent,String receiverPermission)方法来发送广播消息,这三个方法中的Intent参数封装了需要触发的目标BroadcastReceiver的信息。

通过上面不难看出,Intent封装了当年组件需要启动或触发的目标组件的信息,因此有些资料也将Intent翻译为“意图”、实际上Intent对象里封装了大量关于目标组件的信息。


当一个组件通过Intent表示了启动或者触发另一个组件的“意图”之后,这个意图可以分为两类。

  • 显示Intent:显示Intent明确指定需要启动或者触发的组件的类名。
  • 隐式Intent:隐式Intent只是指定需要启动或者触发的组件应满足怎样的条件。

对于显示Intent而言,Android系统无需对该Intent进行解析,系统直接找到指定的目标组件,启动或触发它。

对于隐式Intent而言,Android系统需要对该IIntent 进行解析,解析出它的条件,然后再去系统中查找与之匹配的目标组件。如果找到符合条件的组件,他就会启动或触发他们。


那么Android系统如何判断被调用组件是否符合隐式Intent呢?

这就需要靠IntentFilter来实现了,被调用组件可通过IntentFilter来声明自己所满足的条件——也就是声明自己到底处理那些隐式Intent。


0 0
原创粉丝点击