剖析Intent、Broadcast和Adapter

来源:互联网 发布:淘宝会查快递的重量吗 编辑:程序博客网 时间:2024/06/13 09:07

Android应用程序运行在它所属的暗盒内,但他们可以使用Intent、Broadcast Receiver、Adapter、Content Provider和Internet来扩展超出它们作用域的功能。

Intent消息传递:

Intent最常用的用法是启动新的Activity,不管是显式的(通过指定类来加载)还是隐式的(通过请求在一块数据上执行的动作)。Intent还可以用来广播消息。任何应用程序都可以注册一个Broadcast Receiver来监听,响应这些广播的Intent。它让你创建基于内部的、系统的或第三方应用程序事件的事件驱动式应用程序。

Intent负责对应用中一次操作的动作(Action)、动作相关数据(Data/Type、Category、Component)、附加数据(Extra)进行描述,Android则根据此Intent的描述,负责找到相应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent在这里起着实现调用者与被调用者之间的解耦作用。

Intent的显式匹配和隐式匹配:Intent在传递过程中要找到目标消费者(另一个Activity、IntentReceiver或Service),也就是Intent响应者,有两种方法。

显式:Intent(context,.class)

隐式:填写Action、Data/Type、Category、Component、Extra而不指定.class

Intent 组织架构:

action:用来指明要实施的动作是什么

data:要实施的具体的数据,一般由一个Uri变量表示

category:这个选项指定了将要执行的这个action的其他一些额外的信息,例如LAUNCHER_CATEGORY表示Intent的接受者应该是Launcher中作为顶级应用出现,而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行

type:显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

component:指定Intent的目标组件的类名。通常Android会根据Intent中包含的其他属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性之后,Intent的其他所有属性都是可选的。

extras:是其他所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行“发送电子邮件”这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。

利用上面这些信息可以描述出一些意图行为。

0 0
原创粉丝点击