2010-08-25 31 views
43

我對Android開發很陌生。Android:何時使用Service vs Singleton?

什麼時候創建一個Android服務而不是僅僅使用一個簡單的Singleton類是一個好主意?

例如,從互聯網上下載數據層下載信息。

對於某些情況使用服務似乎太多了,但有時我可能需要訪問Context,所以我對如何設計應用程序有些不確定。

回答

42

如果您的進程在用戶離開其活動後立即被殺死(與單身人士一起),那麼請使用單身人士。如果在此之後需要它繼續運行一段時間,請使用服務。如果您希望在用戶離開後繼續運行,但可以忍受它,而不是因爲用戶現在在其他需要更多內存的地方繼續運行,請使用單例。

這兩個之間的決定只有歸結於您的應用程序的生命週期。爲此,這就是所有的服務 - 請平臺修改您的流程管理。如果您需要單例中的上下文,只需使用Context.getApplicationContext()爲您的過程檢索全局上下文。

+5

第一段的最後一句話有點混亂。你能稍微改述一下嗎? – chakrit 2010-08-25 17:28:05

+0

我認爲這意味着:當你希望進程在用戶離開之後繼續運行時使用單例,但只有當內存不需要更多的地方。 – mparaz 2012-06-09 06:51:44

+1

因此,對於您的信息訂閱下載示例,我*猜測*如果這些訂閱源在提供它們的Internet服務器上進行了緩衝,那麼無論用戶什麼時候回到您的應用程序,都可以趕上*或*如果您只關心關於處理來自Feed的新項目,而不是關於顯示不間斷的歷史,*然後*您可以使用單例,但如果您需要應用程序在用戶做其他事情時繼續監視Feed,那麼您希望一項服務。只是想讓這個更真實一點...有趣的問題。 – Carl 2013-05-16 23:43:39