一、Service概述及用途
概述:服务是运行在后台的一段代码。不是进程也不是线程。 可以运行在它自己的进程,也可以运行在其他应用程序的上下文(Context)里面,这取决于自身的需要。Android中的服务,与Activity不同,他不能与用户交互,不能自己启动,运行在后台的程序里。
用途:媒体播放器的服务,当用户退出媒体选择用户界面时,仍然希望音乐可以继续播放,这就是由服务(Service)来保证当用户界面关闭时音乐继续播放。比如当我们一个应用数据是通过网络获取的,不同时间的数据是不同的,这时候我们可以用Service在后台定时更新,而不是每次打开应用时再去获取。
二、Service生命周期
❶onCreate():在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只会被创建一次。
❷onStrat():只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart()方法会被多次调用。
❸onDestory():服务被终止时调用。
❹onBind():只有采用Context.bindService()方法启动服务时才会回调该方。该方法在调用者与服务绑定时被调用,当调用者与服务已经多次绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。
❺onUnbind():只有采用Context.bindService()方法启动服务时才会回调该方法。该与服务解除绑定时被调用。
startService后,即使调用startService的进程结束了Service仍然还存在,直到有进程调用stopService,或者Service自己自杀(stopSelf());
bindService后,Service就和调用bindService的进程同生共死了,也就是说当调用bindService的进程死了,那么它bind的service也要跟着被结束,当然期间也可以调用unbindService让Service结束。
两种方式混合使用时,比如说你startService了,我bindService了,那么只有你stopService了而且我也unbindservice了,这个Service才会被结束。