看了Android面試一天一題(1 Day)言津,對Service 的一些總結(jié)與思考
作者原文章鏈接: http://www.reibang.com/p/7a7db9f8692d
作者用幾個簡短的問題已經(jīng)問到了service 的精華; 讀完以后根據(jù)自己的理解/先前的項目經(jīng)驗進(jìn)行了一些總結(jié)以及延伸悬槽,如有錯誤的地方,請大家指正蓬坡。?
1. 前臺UI(Activity ) 與后臺任務(wù)之間的執(zhí)行情況可以分為以下三種情景:?
? ? ? (1): UI 退出,后臺任務(wù)退出渣窜。像此種情況采用Thread 或者AsyncTask 實現(xiàn)后臺加載任務(wù)就可以
? ? ? (2): UI 退出宪躯,后臺任務(wù)不退出;UI重新啟動時详瑞,兩者不需要同步進(jìn)度信息臣缀。這種情況可以考慮用Service 實現(xiàn)后臺任務(wù)的執(zhí)行,不用考慮Service 與UI的通信問題
? ? ? (3):UI 退出精置,后臺任務(wù)不退出;當(dāng)UI重新啟動時番宁,后臺Service ?需要與前臺UI同步進(jìn)度等相關(guān)信息赖阻。此種情況需要考慮狀態(tài)的保存恢復(fù)以及Service 與 UI通信問題 ?
2. ?對于后臺Service,如果業(yè)務(wù)需求要求Service ?的生命周期和應(yīng)用進(jìn)程生命周期一樣火欧;可以考慮用靜態(tài)實例類的方案來代替Service 的方案?
3. IntentService 底層實現(xiàn)異步任務(wù)加載的機制適用于不需要并發(fā)執(zhí)行的環(huán)境;但是對于后臺需要同時執(zhí)行多個任務(wù)的情況赶盔,還是采用Service + 線程池的方案比較合適榆浓,例如音樂App后臺下載MP3 文件處理的任務(wù)。 ? ?