2011-09-13 47 views
2

我的應用程序需要一個後臺服務,我可以在其中提交任務。這些任務可能非常通用,它可能涉及下載源,一次獲取位置或獲取資源。此服務需要最小程度的活動交互,並且應在應用程序啓動時啓動,並應在應用程序中沒有掛起任務時退出隊列。帶任務隊列的Android後臺服務

這是一個好主意嗎?我將如何設計這樣的服務?歡迎提供所有建議

回答

4

希望這架構將幫助您:

  1. 如果要執行你的任務即使您的活動結束,然後使用startService()否則,如果你想盡快結束所有的任務,活動結束,然後使用bindService()

  2. 當你調用startservice()如果該服務已經在運行,但其onStartCommand()被稱爲每次調用startservice()時間的onCreate()方法沒有被調用。你可以使用這個屬性。

  3. 您可以實現一個靜態方法,可以從您的活動中訪問該靜態方法以將任務放入其中,並且當您使用靜態方法獲取調用時,可以啓動執行任務的線程。

注意:不要忘記釋放服務中的所有資源(線程等),因爲android不會爲你做。

如果您的活動已完成,那麼在任務執行完成後,您可以使用stopSelf()作爲服務並釋放所有資源。

如果符合您的需求,您可以嘗試IntentService。查詢this瞭解更多詳情。

0

如果您需要一次處理一個請求,IntentService可能會有所幫助。它們自動排隊到工作線程。

0

Android庫Goro可能會有所幫助。

它允許您組織多個隊列中的任務並在服務上下文中運行它們。 默認情況下,它使用與AsyncTask中使用的相同的線程池來實際執行任務。