本人使用bindSerivce和startService结合的方式来启动了一个服务,为什么本人在真机上测试的时候,按返回键服务就直接终止了,按home键一旦与界面产生交互后台服务也就终止了。
解决方案
40
这是一个关于服务声明周期的问题。
一般来说,在调用了startService()方法,相应的服务就会启动起来,并回调onStartCommand()方法。只有服务第一次创建,onCreate()方法会先于onStartCommand()方法执行,其余情况只会执行onStartCommand()方法。
当调用bindService()方法时,会回调onBind()方法,相似,假如服务没有创建,则会先执行onCreate()方法,再执行onBind()方法。调用onBind()方法后,返回IBinder对象实例,这样就能与服务通信了。只要调用方与服务连接没有断开,服务就会一直保持下去。
当调用了stopService()方法,服务的onDestory()方法会执行,销毁服务。相似,当调用了unBindService()方法,服务的onDestory()方法也会执行。因此,当同时调用了startService()方法和bindService()方法,需要同时执行stopService()和unBindService()方法,服务的onDestory()方法才会执行。
一般来说,在调用了startService()方法,相应的服务就会启动起来,并回调onStartCommand()方法。只有服务第一次创建,onCreate()方法会先于onStartCommand()方法执行,其余情况只会执行onStartCommand()方法。
当调用bindService()方法时,会回调onBind()方法,相似,假如服务没有创建,则会先执行onCreate()方法,再执行onBind()方法。调用onBind()方法后,返回IBinder对象实例,这样就能与服务通信了。只要调用方与服务连接没有断开,服务就会一直保持下去。
当调用了stopService()方法,服务的onDestory()方法会执行,销毁服务。相似,当调用了unBindService()方法,服务的onDestory()方法也会执行。因此,当同时调用了startService()方法和bindService()方法,需要同时执行stopService()和unBindService()方法,服务的onDestory()方法才会执行。