当接收到ContentResolver 发出的请求后,内容提供者被激活。而其它三种组件──activity、服务和广播接收器被一种叫做intent 的异步消息所激活。intent 是一个保存着消息内容的Intent 对象。
对于activity 和服务来说,它指明了请求的操作名称以及作为操作对象的数据的URI 和其它一些信息。比如说,它可以承载对一个activity 的请求,让它为用户显示一张图片,或者让用户编辑一些文本。
而对于广播接收器而言,Intent 对象指明了声明的行为。比如,它可以对所有感兴趣的对象声明照相按钮被按下。
对于每种组件来说,激活的方法是不同的:
• 通过传递一个Intent 对象至Context.startActivity()或Activity.startActivityForResult() 以载入(或指定新工作给)一个activity。相应的activity 可以通过调用getIntent() 方法来查看激活它的intent。Android 通过调用activity 的onNewIntent()方法来传递给它继发的 intent。
一个activity 经常启动了下一个。如果它期望它所启动的那个activity 返回一个结果,它会以调用startActivityForResult()来取代startActivity()。比如说,如果它启动了另外一个activity 以使用户挑选一张照片,它也许想知道哪张照片被选中了。
结果将会被 封装在一个Intent 对象中,并传递给发出调用的activity 的onActivityResult() 方法。
• 通过传递一个Intent 对象至Context.startService()将启动一个服务(或给予正在运行的服务以一个新的指令)。Android 调用服务的onStart()方法并将Intent 对象传递给它。
与此类似,一个Intent 可以被调用组件传递给Context.bindService()以获取一个正在运行的目标服务的连接。这个服务会经由onBind() 方法的调用获取这个Intent 对象(如果服务尚未启动,bindService()会先启动它)。比如说,一个activity 可以连接至前述的音乐回放服务,并提供给用户一个可操作的(用户界面)以对回放进行控制。这个activity 可以调用bindService() 来建立连接,然后调用服务中定义的对象来影响回放。
• 应用程序可以凭借将Intent 对象传递给Context.sendBroadcast() ,Context.sendOrderedBroadcast(), 以及Context.sendStickyBroadcast()和其它类似方法来产生一个广播。Android 会调用所有对此广播有兴趣的广播接收器的onReceive()方法,将intent 传递给它们。