1、Service運行在系統的主線程中,所以不要在service中直接執行一些耗時的操作,如果需要可以另起線程執行。
2、Service有它自己的生命週期,用startService的方法啓動,生命週期爲onCreate->onStart->onDestroy;
用bindService的方法啓動,生命週期爲onCreate->onBind->onDestroy。
3、用startService啓動,service的生命週期不依賴與啓動他的組件的生命週期,也就是說即使啓動他的組件銷燬了,service也不一定銷燬,如果想要讓service被銷燬的機率更低可以調用service的setForground方法讓service處於前臺;此時,如果再啓動一次service,如果service未銷燬那麼會執行onStart方法,如果銷燬了,會執行onCreate->onStart。
4、用bindService啓動,service的生命週期依賴與啓動他的組件的生命週期,也就是說啓動他的組件銷燬了,service也會跟着銷燬,如果要主動停止服務可以調用unbindService。
5、startService和bindService可以結合使用,以實現service一直在後臺運行,其他組件又可以和他交互的需要,具體做法是先startService在bindService。
6、如果要停止startService啓動的服務可以在外部調用stopService,也可以在服務內部調用stopSelf。