1

至於其他應用程序組件,如活動,意圖,廣播接收器,我可以理解他們的用例,但無論使用什麼樣的服務寫在文檔中,都可以使用具有靜態成員(變量和方法)的簡單Java類來實現。 就像我需要下載文件服務一樣。 我可以有一個靜態方法,它將在參數中接收taskListener和其他必需的參數(例如文件的url)並下載異步文件,並將回調函數賦給taskListener的回調方法。 那麼,爲什麼我應該使用服務。爲什麼Android服務是作爲另一個應用程序組件製作的?

請別人解釋我提前使用服務,例如

感謝

+0

「服務」有自己的生命週期和獨立於「活動」的時間。藉助靜態字段和異步任務,您有很多失敗的可能性。 – tynn

+0

由於過程(和下載)很可能會從內存中移除,除非用戶打開了電話屏幕,並且用戶在整個下載過程中直接查看活動而不關閉它。當系統需要內存時,它將首先關閉活動,然後再進入服務。 – DeeV

回答

2

首先的原因,服務可以從應用程序之外,如果你願意,通過讓服務是啓動還是必然出口。這不能通過一個簡單的Java類來完成。這對於大多數專業服務(輸入法,AccessibilityService,TileService等)而言至關重要。

其次,服務提高了進程的重要性,告訴Android它正在代表用戶開展工作。這有助於在Android終止該流程以釋放其他應用程序的系統RAM之前保持更長的流程。這不能通過一個簡單的Java類來完成。因此,例如,儘管您可以使用簡單的Java類下載文件,但Android可能會在下載完成之前終止您的過程。如果下載由服務管理,則這種情況不太可能發生。

相關問題