在四种应用组件中,活动,服务和广播这三种是被叫intent(目的,意图)的异步消息激活的。intent彼此绑定在运行时的单个组件,而不管这些组件是属于你的应用还是其它的应用。你可以认为intent就是,其它组件的的请求消息。
intent是被Intent对象创作的,Intent对象定义消息去激活一个或者一种组件的。intent可以是明确的,也可以是暗示的,独自的。
对于活动和服务,intent定义执行的动作(例如,去看或者发送)和可能指定执行的URI(统一资源定义)数据(可能其他的组件需要知道的)。例如,intent可能传送请求给一个活动去显示图片或者打开网页。在一些情况下,你可以启动活动去接收返回结果,在这种情况下,活动也会返回结果给Intent。例如,你可以发出intent去让用户选择一个联系人并让它返回给你,那么返回的intent包含一个选中的联系人的URI点。
对于广播接收器(broadcast receivers),intent简单地定义被广播的通知,例如,一个广播是要指明电池电量低只需包括一个已知的动作字段标识“batter is low”。
剩下的一种组件,内容提供者(content provider),他们不是被intent激活的。而是被,来自ContentResolver的请求定位后,激活的。Content resolver使用content provider处理所有的直接事务,以便执行事务的组件不需要对ContentResolver调用方法。这就在content provider和组件请求信息之间产生了一个抽象层,这是为了安全。
激活每种组件都有单独的方法:
- 你可以通过发送Intent给startActivity()或者startActivityForResult()(当你想接收活动的返回值),启动一个活动或者给它新东西做。
- 你可以通过发送Intent给startService(),来启动一项服务或者给正在运行的服务新的指令;或者你可以通过发送Intent给bindService()来绑定一个服务。
- 你可以通过发送一个Intent给像sendBroadcast(),sendOrderedBroadcast()或者sendStickyBroadcast(),来发起一个广播。
- 你可以通过在ContentResolver中调用query()来向content provider(内容提供者)执行查询。
更多信息关于怎么使用intents,参考Intents and Intent Filters文档。更多的信息关于激活特定的组件也被写在以下的文档: Acitivities,Services,BroadcastReceiver 和 Content Providers。