3 回答

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

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