前几天看到有人这么比喻Intent机制,intent连接各组件就像是女生找男朋友,如果有指定男友为某某某,在Android中指定的了具体是某个组件,那么就是显性意图;如果只是提出要求没有指定具体的某个人,在Android中即没有指定某个具体的组件,那么就是隐式意图。
1、intent的主要作用。
(1)intent是各组件之间通信的桥梁,通过intent可以激活组件。(像activity、service、广播接收者);通过intent是搭建复杂的应用的基础,因为Android本身是基于web2.0下mashup思维来搭建Android应用。
(2)intent可以携带数据,其存取数据的方式是Bundle形式,而Bundle中存储数据的方式是Map键值对的形式。
2、显式Intent和隐式Intent的区别和使用场合。
(1)首先显式意图是指指定了组件名称的intent,像setClass()、setComponent()等方法指定了具体的组件名称。(在这种情况下,Android系统不用去application节点中去找是否匹配,而是直接激活指定名称的组件即可);而隐式intent的话,是指没有指定具体的组件名称,而是通过intent对象的setAction()、addCategory()、setData()等方法指定启动的组件必须满足的条件;而等待被激活组件需要在intentFilter中添加自己的条件;只要等待被激活组件自身的条件满足(>=)隐式intent指定的条件即可被激活。
3、关于intent的几点小结:
(1)intent表示启动某个程序组件的“意图”,intent可以启动本应用的组件,也可以启动Android系统的其他应用的组件(只要权限允许exported)。
(2)使用隐式intent时,关于Data和Type相互覆盖的问题,解决方法使用setDataAndType()方法。
(3)使用intent还可以创建Tab页面。