我的應用程序需要一個後臺服務,我可以在其中提交任務。這些任務可能非常通用,它可能涉及下載源,一次獲取位置或獲取資源。此服務需要最小程度的活動交互,並且應在應用程序啓動時啓動,並應在應用程序中沒有掛起任務時退出隊列。帶任務隊列的Android後臺服務
這是一個好主意嗎?我將如何設計這樣的服務?歡迎提供所有建議
我的應用程序需要一個後臺服務,我可以在其中提交任務。這些任務可能非常通用,它可能涉及下載源,一次獲取位置或獲取資源。此服務需要最小程度的活動交互,並且應在應用程序啓動時啓動,並應在應用程序中沒有掛起任務時退出隊列。帶任務隊列的Android後臺服務
這是一個好主意嗎?我將如何設計這樣的服務?歡迎提供所有建議
希望這架構將幫助您:
如果要執行你的任務即使您的活動結束,然後使用startService()
否則,如果你想盡快結束所有的任務,活動結束,然後使用bindService()
。
當你調用startservice()
如果該服務已經在運行,但其onStartCommand()
被稱爲每次調用startservice()
時間的onCreate()方法沒有被調用。你可以使用這個屬性。
您可以實現一個靜態方法,可以從您的活動中訪問該靜態方法以將任務放入其中,並且當您使用靜態方法獲取調用時,可以啓動執行任務的線程。
注意:不要忘記釋放服務中的所有資源(線程等),因爲android不會爲你做。
如果您的活動已完成,那麼在任務執行完成後,您可以使用stopSelf()
作爲服務並釋放所有資源。
如果符合您的需求,您可以嘗試IntentService。查詢this瞭解更多詳情。
如果您需要一次處理一個請求,IntentService可能會有所幫助。它們自動排隊到工作線程。
Android庫Goro可能會有所幫助。
它允許您組織多個隊列中的任務並在服務上下文中運行它們。 默認情況下,它使用與AsyncTask
中使用的相同的線程池來實際執行任務。