当有一个来自于content resolver的请求指向Content provider时,content provider启动,其他的三个组件(Activity,service,broadcast receiver)是通过一个叫做intent的异步的消息来启动的,一个intent持有一个message的内容,对Activity和 service来说,他是一个被要求的动作(action)和在该动作上的数据的URI,对broadcast receiver来说,intent对象是一个被广播的动作。
针对每种组件分别有对应的方法来启动它:
(1)一个 Activity是通过传递一个Intent对象到Context.startActivity()或者 Activity.startActivityForResult()来启动的(或者去做一些新的任务),被启动的这个Activity可以通过 getIntent()来获得导致他启动的那个intent的。
(2)一个service是通过传递一个Intent对象到 Context.startService()来启动的(或者给一些新的命令给正在运行的service),android调用service的 onStart()方法,并且把Intent对象传递给他,同样的,一个Intent可以传递到Context.bindService()方法里来建立 一个介于正在运行的service和调用他的组件之间的连接,这个service通过onBind()方法来接收这个Intent对象,(如果这个 service还没有运行,bindservice()能选择性的启动它),在后面的部分,关于绑定service的更多详细的信息请查看远程调用。
(3)一个应用可以通过传递一个Intent对象给像Context.sendBroadcast(), Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()这样的方法来开始一个广播,android通过调用对应的onReceive()方法将 intent传递给所有对这个广播感兴趣的broadcast receiver。
针对每种组件分别有对应的方法来启动它:
(1)一个 Activity是通过传递一个Intent对象到Context.startActivity()或者 Activity.startActivityForResult()来启动的(或者去做一些新的任务),被启动的这个Activity可以通过 getIntent()来获得导致他启动的那个intent的。
(2)一个service是通过传递一个Intent对象到 Context.startService()来启动的(或者给一些新的命令给正在运行的service),android调用service的 onStart()方法,并且把Intent对象传递给他,同样的,一个Intent可以传递到Context.bindService()方法里来建立 一个介于正在运行的service和调用他的组件之间的连接,这个service通过onBind()方法来接收这个Intent对象,(如果这个 service还没有运行,bindservice()能选择性的启动它),在后面的部分,关于绑定service的更多详细的信息请查看远程调用。
(3)一个应用可以通过传递一个Intent对象给像Context.sendBroadcast(), Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()这样的方法来开始一个广播,android通过调用对应的onReceive()方法将 intent传递给所有对这个广播感兴趣的broadcast receiver。