1

我有服務綁定到應用上下文,這個服務運行在一個單獨的進程(可以說#service_process)。 我通過拋出未捕獲的異常和應用程序的主進程(#main_proccess)停止模擬應用程序崩潰,顯然會終止並GCing組件,包括主應用程序上下文。 服務也解綁(斷開)並銷燬(我調用了Service#onDestroy())。服務被銷燬後,遠程進程託管服務會發生什麼?

但是,即使在#main進程已經死亡後,根據$ adb shell ps | grep com.my_app,#service_process仍然保持活動狀態。

任何人都可以解釋這種行爲的原因嗎? 怎麼可能避免'晃來晃去'#service_process?

回答

0

實際上,服務進程與前臺服務進程沒有多大區別。如所描述的here

的Android的一個不尋常和基本特徵是,一個應用程序 過程的生命週期不直接由應用程序本身 控制。相反,它由系統通過組合系統 確定系統知道正在運行,這些東西對用戶如何重要以及系統中可用的整體內存有多少。

這一個:

服務流程...這樣的系統將永遠保持這樣的過程 運行,除非沒有足夠的內存來保留所有的前景和 可見的過程。

+0

謝謝,但正如我所描述的,我綁定到服務,不啓動它,所以我沒有'3。服務流程'。可能是我有'5所指的。空過程' – kiruwka

+0

我不這麼認爲,因爲如果你綁定它或者調用startService()(這兩種方式的過程都會啓動,但是在綁定的情況下它會綁定setuped)並不重要。它實際上只是爲您的服務調用onDestroy,而不是根據我的理解爲流程生命週期,我無法找到關於綁定/流程生命週期關係的任何信息。 – sandrstar