2011-12-01 56 views
0

我正在開發一個android應用程序,我偶然發現了一些我並不真正瞭解最佳解決方法的東西。Android隊列和線程

我wwant實現的是,當用戶登錄到應用程序,我想啓動一個線程,如果設備連接到網絡(也無所謂什麼樣的網絡)

線程應每10分鐘執行一次操作。

這個線程需要做的是循環一個列表,一個隊列更精確。 該隊列將擁有對象,並在有可用連接時根據隊列中的對象執行。

隊列將通過應用程序的流程填充。 例如填寫問題。

需要將答案同步到服務器。每個問題都可以包含從相機拍攝的圖片等,所以我想將某些數據保存爲一個對象,將它們放入一個隊列中,然後讓一個線程處理http請求。這樣UI不會被阻塞。儘可能地同步非常重要。

我想避免的是將另一個進程從我自己的APP旁邊運行。這就是爲什麼我沒有使用服務。還是我錯誤地理解整個服務的概念?

是否有特定的隊列對象或列表? 我想循環槽列表,可以在程序處於活動狀態時隨時填充,列表完全爲空時使用thread.sleep類似方法。

請留下我的提示和提示,以什麼方式去與此。

回答

1

服務是不是它自己的過程......從Documentation:「A服務是一個單獨的進程服務對象本身並不意味着它是在其自己的進程中運行,除非另有規定,它。運行在與它所屬的應用程序相同的進程中。「

服務真的是您所談論的最佳選擇。您在服務中產生自己的線程,然後執行以下操作:檢查隊列中的對象並將其發送到服務器(因爲您已經不在UI線程中,如果需要,您可以在不產生另一個線程的情況下執行此操作) 。如果隊列爲空,請使用Timer安排另一次調用您的上傳方法。

+1

非常感謝。當我在工作中提出服務這個詞時,我的老闆告訴我服務通常是另一個過程。但他並不自己編寫android。我仍然應該看看它。謝謝。我想我可以繼續這樣做。對於隊列,是否有其他特殊對象可供使用?或者列表/數組列表是否足夠? –