2010-12-04 16 views
12

請解釋Android Service。它與Activity有什麼不同?它是否依賴於應用程序狀態,如在前景/背景中運行?Android服務

回答

28

Android Developer's SDK reference for Service

A服務是代表或者應用程序的願望,執行長時間運行的操作,而不是與用戶交互的應用程序組件或提供其他應用程序使用的功能。

要注意這一點非常重要

即服務,像其他應用程序對象,在其宿主進程的主線程中運行。這意味着,如果你的服務要做任何CPU密集型(如MP3播放)或阻塞(如網絡)操作,它應該產生自己的線程來完成這項工作。

這是相對於這是最好的東西用戶直接看到並與之交互理解的活性(的UI。)

服務,如上面所提到的,可用於較長的運行的操作即使您沒有前臺活動,它也會繼續運行,但如果處於「後臺」狀態,它們最終會被Android的生命週期殺死。如果您需要您的服務作爲單個實例繼續運行而不會被終止並重新啓動,那麼我會建議將startForeground(int id, Notification notification)放在您的服務的onCreate方法中,並將stopForeground(boolean removeNotification)放在您的服務的onDestroy方法中。

例如,我有一個應用程序使用foreground Service整夜記錄加速計數據,而android設備位於用戶身體旁邊。雖然它不被主動要求,我也有一個Activity是廣播的IntentBroadcastReceiverService它告訴Service,它也應該與廣播加速度計數據的Intent作爲額外的BroadcastReceiverActivity內內。

代碼: SleepActivity SleepAccelerometerService

祝你好運,讓我知道,如果你需要更多的信息!

+1

您的第二個鏈接「SleepAccelerometerService」已損壞。 – gonzobrains 2013-04-25 21:02:32