当只使用startService()来启动服务spa
startService能够屡次调用,stopService()也能够屡次调用。生命周期
总结:::startService第一次调用的时候,Service的生命周期方法事件
onCreate()---->onStartCommand()会执行。再次并屡次调用startService会使Service的 生命周期方法onStartCommand()屡次执行,onCreate()方法不执行了。service
总结:::调用stopService()是若是Service已经启动,Service的生命周 期方法 onDestroy()会 执行。再次并屡次调用没有任何反应不回调生命周期方法了。能够屡次调用(不崩溃)下载
Service 中的onStartCommand()必须返回一个整数.这个整数描述了在系统杀死它的事件中系统如何继续这个服务onStartCommand()也返回值必须是下面常量之一:方法
START_NOT_STICKY总结
若是系统在onStartCommand()返回后杀死了服务,不要从新建立这个service,除非还有挂起的intent须要被传送.这是避免在没必要要时运行你的service和当你的应用能够简单重启任何未竟的工做时的最佳选择.top
START_STICKY 若是强制退出了 那么他会使用一个null 的intent 请注意文件
若是系统在onStartCommand()返回后杀死了这个service,会从新建立这个service而且调用onStartCommand(),可是再也不从新发送上次最后一个intent,而是使用一个nullintent调用onStartCommand(),除非有一些挂起的intent,在此状况下,这些挂起的intent被派送.这适合于媒体播放器(or或类似也的服务),它不执行命令,可是无限期的运行并等待一个工做.vi
START_REDELIVER_INTENT
若是系统在onStartCommand()返回后杀死了service,从新建立这个service而且使用上次最后一个intent调用onStartCommand().任何挂起的intent都顺序地被派送.这适合于活跃地执行一个工做而且应被当即恢复的服务,好比下载一个文件
当只使用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。