startService:
执行startService时,Service会经历onCreate->onStartCommand。
当执行stopService时,直接调用onDestroy方法。
调用者如果没有stopService,Service会一直在后台运行,
下次调用者再起来仍然可以stopService。
bindService:
执行bindService时,Service会经历onCreate->onBind。
这个时候调用者和Service绑定在一起。
调用者调用unbindService方法或者调用者Context不存在了(如Activity被finish了),
Service就会调用onUnbind->onDestroy。
这里所谓的绑定在一起就是说两者共存亡了。
那么,什么情况下既使用startService,又使用bindService呢?
如果你只是想要启动一个后台服务长期进行某项任务,
那么使用startService便可以了。
如果你还想要与正在运行的Service取得联系,那么有两种方法:
一种是使用broadcast,另一种是使用bindService。
前者的缺点是如果交流较为频繁,容易造成性能上的问题,
而后者则没有这些问题。因此,
这种情况就需要startService和bindService一起使用了
startService:
程序到后台 退出 播放service依然在,依然播放歌曲。
要停止播放service --进入界面 停止播放 停止播放service 在退出界面。
bindService: 程序到后台依然可以播放 程序退出播放停止。
功能若 只能后台播放,
startService bindService 混合使用:
执行startService时,Service会经历onCreate->onStartCommand。
当执行stopService时,直接调用onDestroy方法。
调用者如果没有stopService,Service会一直在后台运行,
下次调用者再起来仍然可以stopService。
bindService:
执行bindService时,Service会经历onCreate->onBind。
这个时候调用者和Service绑定在一起。
调用者调用unbindService方法或者调用者Context不存在了(如Activity被finish了),
Service就会调用onUnbind->onDestroy。
这里所谓的绑定在一起就是说两者共存亡了。
那么,什么情况下既使用startService,又使用bindService呢?
如果你只是想要启动一个后台服务长期进行某项任务,
那么使用startService便可以了。
如果你还想要与正在运行的Service取得联系,那么有两种方法:
一种是使用broadcast,另一种是使用bindService。
前者的缺点是如果交流较为频繁,容易造成性能上的问题,
而后者则没有这些问题。因此,
这种情况就需要startService和bindService一起使用了
startService:
程序到后台 退出 播放service依然在,依然播放歌曲。
要停止播放service --进入界面 停止播放 停止播放service 在退出界面。
bindService: 程序到后台依然可以播放 程序退出播放停止。
功能若 只能后台播放,
startService bindService 混合使用: