当只使用startService()来启动服务
startService可以多次调用,stopService()也可以多次调用。
总结:::startService第一次调用的时候,Service的生命周期方法
onCreate()---->onStartCommand()会执行。再次并多次调用startService会使Service的 生命周期方法onStartCommand()多次执行,onCreate()方法不执行了。
总结:::调用stopService()是如果Service已经启动,Service的生命周 期方法 onDestroy()会 执行。再次并多次调用没有任何反应不回调生命周期方法了。可以多次调用(不崩溃)
当只使用bindservice()来启动服务
bindservice()方法可以多次调用,unbindService()方法不可以多次调用(应用会崩溃)。
总结:::bindService()并且《bindService()方法第三个参数
是Context.BIND_AUTO_CREATE》 的时候,第一次调用bindService()方法 Service生命周期方法
onCreate()-->onBind()执行,再次并多次调用生命周期方法不回调。
总结:::bindService()并且《bindService()方法第三个参数
不是Context.BIND_AUTO_CREATE》的时候,第一次(再次多次)调用bindService()方 法Servic生命周期方法都不会回调。(因为这个时候服务没有启动)
总结:::unbindService()方法如果调用了,Service必须注册了(即调用过bindService方 法),service生命周期的onUnbind()-->onDestroy()。如果没有注册过那么调用 unbindService()会崩溃。所以不能再次并多次调用unbindService()。
同时使用了 startService()和bindService()并且《bindService()方法第三个参数 是Context.BIND_AUTO_CREATE》。
情况1:::如果我们只调用stopService(),不会回调任何生命周期方法。只有我们再次调 用unbindService()才会执行ervice的生命周期的ubind()和onDestroy()方法。
情况2:::如果先调用unbindService()方法会先执行Service的生命周期的ubind(),然后再调 用stopService()方法就会执行Service的生命周期的onDestroy()方法。
总结:::在Context.BIND_AUTO_CREATE模式下同时使用了 startService()和bindService(),想要 完全退出Service必须调用stopService()和unbindService()两个方法。
同时使用了 startService()和bindService()并且《bindService()方法第三个参数
不是Context.BIND_AUTO_CREATE》。
情况1:::如果我们只调用stopService(),那就会执行Service的生命周期的unbind()和onDestroy() 方法(可以不必调用unbindService())。
情况2:::如果先调用unbindService()方法会先执行Service的生命周期的ubind(),如果再调 用stopService()方法就会执行Service的生命周期的onDestroy()方法。
总结:::不在Context.BIND_AUTO_CREATE模式下,同时使用了 startService()和bindService() 可以只调用stopService()方法来完全退出Service。