為什么我們需要IntentService ?
Android中的IntentService是繼承自Service類的,在我們討論IntentService之前,我們先想一下Service的特點: Service的回調(diào)方法(onCreate、onStartCommand、onBind、onDestroy)都是運行在主線程中的。當(dāng)我們通過startService啟動Service之后,我們就需要在Service的onStartCommand方法中寫代碼完成工作,但是onStartCommand是運行在主線程中的,如果我們需要在此處完成一些網(wǎng)絡(luò)請求或IO等耗時操作,這樣就會阻塞主線程UI無響應(yīng),從而出現(xiàn)ANR現(xiàn)象。為了解決這種問題,最好的辦法就是在onStartCommand中創(chuàng)建一個新的線程,并把耗時代碼放到這個新線程中執(zhí)行。可以參考之前的文章《Android通過startService實現(xiàn)文件批量下載》,這篇文章在onStartCommand中開啟了新的線程作為工作線程去執(zhí)行網(wǎng)絡(luò)請求,所以這樣不會阻塞主線程。由此看來,創(chuàng)建一個帶有工作線程的Service是一種很常見的需求(因為工作線程不會阻塞主線程),所以Android為了簡化開發(fā)帶有工作線程的Service,Android額外開發(fā)了一個類―― 主站蜘蛛池模板: 台中县| 昂仁县| 健康| 镇赉县| 临湘市| 九台市| 无锡市| 黄骅市| 吕梁市| 从江县| 长白| 栾城县| 娄烦县| 博湖县| 怀柔区| 兰坪| 兴文县| 德清县| 许昌县| 天峨县| 峡江县| 邢台县| 宁乡县| 绥化市| 清新县| 保亭| 出国| 保德县| 托克逊县| 江门市| 韶关市| 封丘县| 马关县| 龙门县| 仙桃市| 卢氏县| 兴仁县| 嵩明县| 库尔勒市| 枣强县| 抚顺市|