![Android程序员面试笔试宝典](https://wfqqreader-1252317822.image.myqcloud.com/cover/682/39130682/b_39130682.jpg)
上QQ阅读APP看书,第一时间看更新
1.2.2 生命周期
服务的生命周期分两种情况:
1)如果仅是在活动中调用了startService()方法,这时相应的服务会被创建并启动,onCreate()和onStartCommand()方法会依次被执行,当然如果下次再调用startService()方法,由于服务已经被创建了,所以仅执行onStartCommand()方法。如果停止服务,可以在活动中调用stopService()方法,此时服务的onDestroy()方法执行。需要注意的是,由于每个服务都只存在一个实例,所以要停止服务,只需要调用一次stopService()即可(不管调用了多少次startService()方法)。生命周期如下:
![](https://epubservercos.yuewen.com/FCD2F4/20516007501589706/epubprivate/OEBPS/Images/29_02.jpg?sign=1739586621-oZNFsHwx8wgByX8LvvXRJgZ6Ks2B4V1U-0-69ef301bf38beb6004e72b7979ce6c4d)
![](https://epubservercos.yuewen.com/FCD2F4/20516007501589706/epubprivate/OEBPS/Images/30_01.jpg?sign=1739586621-NShYaXuzX1v6SE1MwPQAxRVjuMvWtck0-0-0b12af140b314e89e7c431837f30df6d)
2)如果活动调用了bindService()方法,这时服务被创建并启动,此时依次执行的是onCreate()和onBind()方法,当然如果下次再调用bindService()方法,也只会执行onBind()方法。活动调用bindService()可以获取服务的onBind()里返回的IBinder对象实例,这样就能实现活动与服务交互。停止服务只需调用unbindService()方法,服务的onDestroy()方法会自动执行。生命周期如下:
![](https://epubservercos.yuewen.com/FCD2F4/20516007501589706/epubprivate/OEBPS/Images/30_02.jpg?sign=1739586621-GigwXBn7OR4WFiQUyYaZsXE9IMt0i639-0-ebe8ff7fcef3b678fbebd76928ce7c78)
这里要注意的是,如果同时调用了startService()方法与bindService()方法,那么在停止服务时,需要同时调用stopService()方法与unbindService()方法。