返回值
實(shí)際上onStartCommand()的返回值int類型才是最最值得注意的,它有三種可選值, START_STICKY手幢,START_NOT_STICKY,START_REDELIVER_INTENT忱详,它們具體含義如下:
START_STICKY
當(dāng)Service因內(nèi)存不足而被系統(tǒng)kill后围来,一段時(shí)間后內(nèi)存再次空閑時(shí),系統(tǒng)將會(huì)嘗試重新創(chuàng)建此Service,一旦創(chuàng)建成功后將回調(diào)onStartCommand方法监透,但其中的Intent將是null桶错,除非有掛起的Intent,如pendingintent胀蛮,這個(gè)狀態(tài)下比較適用于不執(zhí)行命令院刁、但無(wú)限期運(yùn)行并等待作業(yè)的媒體播放器或類似服務(wù)。
START_NOT_STICKY
當(dāng)Service因內(nèi)存不足而被系統(tǒng)kill后粪狼,即使系統(tǒng)內(nèi)存再次空閑時(shí)退腥,系統(tǒng)也不會(huì)嘗試重新創(chuàng)建此Service。除非程序中再次調(diào)用startService啟動(dòng)此Service再榄,這是最安全的選項(xiàng)狡刘,可以避免在不必要時(shí)以及應(yīng)用能夠輕松重啟所有未完成的作業(yè)時(shí)運(yùn)行服務(wù)。
START_REDELIVER_INTENT
當(dāng)Service因內(nèi)存不足而被系統(tǒng)kill后困鸥,則會(huì)重建服務(wù)嗅蔬,并通過(guò)傳遞給服務(wù)的最后一個(gè) Intent 調(diào)用 onStartCommand(),任何掛起 Intent均依次傳遞疾就。與START_STICKY不同的是购城,其中的傳遞的Intent將是非空,是最后一次調(diào)用startService中的intent虐译。這個(gè)值適用于主動(dòng)執(zhí)行應(yīng)該立即恢復(fù)的作業(yè)(例如下載文件)的服務(wù)。