资料上说有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate -> onStart
stopService的时候直接onDestroy
如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。下次调用者再起来可以stopService。
2 通过bindService
Service只会运行onCreate, 这个时候服务的调用者和服务绑定在一起
调用者退出了,Service就会调用onUnbind->onDestroyed,所谓绑定在一起就共存亡了。并且这种方式还可以使得调用方(例如)调用服务上的其他的方法。
关于第2点说调用者退出了,那么Service就会调用onUnbind->onDestroyed。我写了一个demo查看生命周期发现并不是这样的,调用的activity退出了,service并没有调用onDestroyed,还在运行,这是为什么呢?
------解决方案--------------------
贴代码,老实说服务的3种,我只有以一种和AIDL,简单绑定型还真没试过,你贴代码,我分析下
------解决方案--------------------
bind方式启动的service,activity退出后,service还是可以继续运行的。
------解决方案--------------------
我也觉得文档里面说的有问题。
activity退出时,不会影响Service(通过bind方式创建的)的运行,也不会自动调用UnbindService,相反,如果手动调用UnbindService,反而会让Service崩溃。
------解决方案--------------------
很多资料上都是象楼主贴的那样说的,绑定启动Service()后,就同生共死了。但是,如果,在biand 之前已经有startService()了,那就会直到,unbindService()和stoptService()之后Service才会被结束
------解决方案--------------------
Activity中是不是没写这个注销绑定的方法吧
unbindService(_connection);
bindService这种方式启动,在手机上按Home键Activity是不会退出的,再次进来点击绑定也不会执行任何方法,他是不执行onStart的,但是要按back的话,Activity会直接退出,Service调用onUnbind-->onDestroy
------解决方案--------------------
看来这个问题还是需要实际验证下,退出activtiy时,到底会不会执行onUnbind,onDestroy.