- startService()后,即使调用startService()的进程结束了,Service 仍然还存在,直到有进程调用stoptService(),或者Service 自己自杀stopSelf()了.
- bindService()后,Service 就和调用bindService()的进程同生共死,当然期间可以调用unbindService()让Service 结束.
- 两种方式混合使用时,比如说你startService()了,我bindService()了,那么只有你stopService()了而且我也unbindService()了,这个Service 才会被结束。
2011年6月15日补充:
【0】与采用Context.startService()方法启动服务有关的生命周期方法
onCreate() ->onStart() ->onDestroy()
- onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只被创建一次。
- onStart() 只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart() 方法会被多次调用。
- onDestroy()该方法在服务被终止时调用。
【1】与采用Context.bindService()方法启动服务有关的生命周期方法
onCreate() ->onBind() ->onUnbind()->onDestroy()
- onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。
- onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。
- 如果先采用startService()方法启动服务,然后调用bindService()方法绑定到服务,再调用unbindService()方法解除绑定,最后调用bindService()方法再次绑定到服务,触发的生命周期方法如下:
- onCreate() ->onStart() ->onBind() ->onUnbind()[重载后的方法需返回true] ->onRebind()