【Activating Components】
4种组件类中的3种-activities、services、broadcast-被一个称为intent的异步消息激活。Intents让单独的组件在运行时绑定在一起(你可以把他们看作从其它组件请求行为的消息),不管那个组件属不属于你的应用程序。
intent被Intent对象创建,用来定义一个消息以启动一个指定组件或者是指定类型的组件-一个Intent可以是显示的或隐式的。
对activities和services来讲,一个intent定义了执行的行为(例如,查看或发送某个事情),可以指定要操作的URI(组件启动需要知道的事情)。例如,一个intent可以发送一个请求给activity来展现一个图片蔌者打开一个web页面。在某些情况下,你可以启动一个activity来接收结果,在这种情况下,请求的activity也返回结果在一个intent中(例如,你可发出一个intent来让用户选择一个用户联系人,然后返回给你-这个返回的intent包含一个指定选择联系人的URI)。
对broadcast receivers,intent仅简单的定义被广播的声明(例如,一个设备电量低的广播只包括一个已经的行为字符串代表“battery is low”)。
其它的组件类型,content provider,不是被intent激活。相反,它在被一个来自ContentResolver的请求盯上的时被激活。ContentResolver操作所有和content provider直接的事务,而实现事务的组件不需要和ContenResolver通信。这使得在content provider和component请求者之间留了一个虚拟的层(出于全安)。
有单独的方法来激活各种类型的组件:
1、你可以开始一个activity通过传递一个Intent给startActivity()或startActivityForResult()(当前需要activity 返回返回一个结果)。
2、你可以开户一个service(或者给当前运行service新指示)通过传递一个Intent给startService(),或者你可以绑定到service通过传递一个Intent给bindService()。
3、你可以初始化一个broadcast通过传递一个Intent给方法例如sendBroadcast()、sendOrderedBroadcast()或者sendStickyBroadcast()。
4、你可以实现查询一个content provider通过调用ContentreSolver的query()函数。