2017-07-03 96 views
1

根據documentation,默認情況下,每個android組件在相同的進程中運行。所以當調用startService啓動一個intentService時UI線程。 intentService實際上運行在相同的進程,但是不同的線程叫做工作線程,對嗎?intentService不會被System終止?

如果沒有足夠的內存,系統可能會終止任何應用程序進程。根據intentService的documentation,它只會在工作完成後自行停止。這是否意味着運行IntentService的進程不會被系統殺死?因爲它是託管UI線程的相同進程,這是否意味着即使應用程序在後臺,只要應用程序有一個intentService運行它不會被系統殺死?

感謝

回答

1

的intentService實際上在同一個進程中運行,但不同的線程中調用工作線程,對不對?

Java中的對象不會在線程中「運行」。方法在線程上調用。在後臺線程上調用IntentServiceonHandleIntent()方法。

這是否意味着運行IntentService的進程不會被系統殺死?

既然是哪些主機UI線程相同的過程

每個過程有一個稱爲其主應用程序線程(或,有時螺紋,其UI線程)。線程與進程綁定在一起;整個設備沒有單一的魔術「UI線程」。

這是否意味着,即使應用程序在後臺,只要應用程序有一個intentService運行它不會被系統殺死?

+0

所以,如果我們不指定調用onHandleIntent,後臺線程,其執行onHandlerIntent會被殺死時,系統殺死任何應用程序的過程號? –

+0

@ shuoweng:如果通過「系統殺死應用程序」,你的意思是「Android終止服務所在的進程」,那麼是的。 – CommonsWare