3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
什么時(shí)候使用?
這個(gè) 服務(wù)可以在沒(méi)有UI的任務(wù)中使用,但不應(yīng)該太長(zhǎng)。如果需要執(zhí)行長(zhǎng)任務(wù),則必須在服務(wù)中使用線程。 這個(gè) 觸角服務(wù)可用于長(zhǎng)任務(wù),通常不與主線程通信。如果需要通信,可以使用主線程處理程序或廣播意圖。另一種使用情況是需要回調(diào)(意圖觸發(fā)的任務(wù))。
怎么觸發(fā)?
這個(gè) 服務(wù)由調(diào)用方法觸發(fā)。 startService()
.這個(gè) 觸角服務(wù)使用意圖觸發(fā),則生成新的輔助線程和方法。 onHandleIntent()
在這個(gè)線程上調(diào)用。
觸發(fā)自
這個(gè) 服務(wù)
和 觸角服務(wù)
可以從任何線程、活動(dòng)或其他應(yīng)用程序組件觸發(fā)。
跑上
這個(gè) 服務(wù)在后臺(tái)運(yùn)行,但它運(yùn)行在應(yīng)用程序的主線程上。 這個(gè) 觸角服務(wù)在單獨(dú)的工作線程上運(yùn)行。
限制/缺點(diǎn)
這個(gè) 服務(wù)可能會(huì)阻塞應(yīng)用程序的主線程。 這個(gè) 觸角服務(wù)無(wú)法并行運(yùn)行任務(wù)。因此,所有連續(xù)的意圖都將進(jìn)入工作線程的消息隊(duì)列并按順序執(zhí)行。
什么時(shí)候停下來(lái)?
如果您實(shí)現(xiàn)了 服務(wù),您有責(zé)任在服務(wù)工作完成時(shí)停止服務(wù),方法是調(diào)用 stopSelf()
或 stopService()
..(如果只想提供綁定,則不需要實(shí)現(xiàn)此方法)。 這個(gè) 觸角服務(wù)在處理完所有啟動(dòng)請(qǐng)求后停止服務(wù),因此您不必調(diào)用 stopSelf()
.

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
服務(wù)
由 startService()
從任何 Thread
跑上 Main Thread
可以阻塞主(UI)線程。始終將服務(wù)中的線程用于長(zhǎng)任務(wù)。 一旦任務(wù)完成,我們就有責(zé)任通過(guò)調(diào)用停止服務(wù)。 stopSelf()
或 stopService()
觸角服務(wù)
它執(zhí)行長(zhǎng)任務(wù),通常不與主線程通信,如果需要通信,則由 Handler
或 BroadcastReceiver
調(diào)用通道 Intent
觸發(fā)自 Main Thread
在單獨(dú)的線程上運(yùn)行。 無(wú)法并行運(yùn)行任務(wù),多個(gè)意圖在同一個(gè)工作線程上排隊(duì)。
添加回答
舉報(bào)