我知道服務在後臺運行。我之前使用過Service類,並且知道它的相關方法。但是,我的問題涉及與在後臺運行服務相對應的內部操作。服務如何在Android內部運行?
從文檔:「請注意,與其他應用程序對象一樣,服務在其託管過程的主線程中運行。」
我還檢查了這個問題:How does a service runs in the background - Android
這是否意味着UI線程將繼續工作,並執行該服務是應該做任務?這可以看作是在「應用程序的背景」中運行由於應用程序任務默認在主線程上運行,並且服務將在沒有UI的情況下在該線程上運行?這個詞是否正確?或者,「在操作系統的背景下運行」更正確?
如果我使用服務(不是IntentService),然後在該服務中啓動一個新線程,它也會被視爲在應用程序的後臺運行,或者該線程將運行在不同的進程中,並被視爲在操作系統的後臺運行?
如果有人能幫助我理解這個概念,我將不勝感激。
謝謝
謝謝你的回答。但是文檔中術語「背景」是什麼意思,它是應用程序還是操作系統的背景?或者,它只是表明它沒有UI?另外,如果一個服務啓動一個線程,該線程會運行在應用程序的進程中還是運行在另一個進程中?謝謝。 – Dania
默認情況下,所有服務都處於同一進程中,因此服務啓動的所有線程都將處於同一進程中。您可以在單獨的進程中啓動服務,但這樣做可以接受一些限制(例如需要通過aidl使用IPC綁定到它)。如果你這樣做,它將有自己的主線程與應用程序的其餘部分分開。但不建議,除非你知道你爲什麼這麼做。文檔中的背景意味着「不顯示UI」,並表示無論屏幕上顯示的內容如何,它都會繼續運行。 –
太好了,非常感謝你的幫助。 – Dania