安卓Service生命周期,你应该知道的都在这里

如有转载,请申明:

转载至 http://blog.csdn.net/qq_35064774/article/details/52567004


Service是安卓的四大组件之一。它是一个没有界面的组件,且优先级大于后台进程。

了解它的生命周期很有必要。

 

Service启动的分类

 

启动服务: 通过startService启动的服务称为启动服务

绑定启动服务: 通过bindService启动的服务成为绑定启动服务

混个开启服务: 既开启了服务,又绑定了服务。但通常是先开启服务,然后绑定,解绑,关闭。

 

生命周期

 

对于服务来说,有两种启动方式。

 

start方式启动服务:

onCreate: 服务创建时调用

onStartCommand: 服务被调用开启方法时调用

onDestroy: 服务销毁时调用

 

当在代码中执行startService时,如果服务不存在,就会先调用onCreate,然后调用onStartCommand;而如果服务已经存在,则只会调用onStartCommand

当在代码中执行stopService时,就会执行onDestroy

 

需要注意的是,start方式开启的服务与开启者(Activity)无直接联系,也就是当应用退出后,服务还是会继续运行。

 

 

bind方式启动服务:

onCreate: 服务创建时调用

onBind: 服务被绑定时调用

onServiceConnected: 服务连接时调用。该API并不属于Service,而是属于ServiceConnection。而这个接口作为参数在绑定时传递给了Service

onUnbind: 服务被解绑时调用

onDestroy: 服务销毁时调用

 

这种方式的执行顺序大致就是上述顺序方式。

start方式开始的服务不同的是,当绑定的应用退出时,服务也会停止。

 


混合开启服务:

onCreate: 服务创建时调用

onStartCommand: 服务被调用开启方法时调用

onBind: 服务被绑定时调用

onServiceConnected: 服务连接时调用。该API并不属于Service,而是属于ServiceConnection。而这个接口作为参数在绑定时传递给了Service

onUnbind: 服务被解绑时调用

onDestroy: 服务销毁时调用

 

混合开启服务一般是按照上述流程,也就是先开启服务,然后在绑定,在关闭服务之前,解绑服务。这样可以避免一些莫名的问题。

 

混合开启服务的好处在于,既可以实现应用退出后,仍然可以运行服务,在应用运行时,可以绑定服务,调用服务中的方法。


你可能感兴趣的:(android开发)