android服务类 Service

                当只使用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。

相关文章
相关标签/搜索