應用程序有當應用程序啓動一個後臺服務運行在後臺服務發送。在這項服務中,onStartCommand()
開始使用讀取之間傳遞的參數的參數來偵聽GPS位置。比方說50米。每一個位置閱讀下面的操作時有發生:
- 讀取位置存儲在本地數據庫
- 從數據庫
- 位置(一個或多個)發送到Web服務器檢索所有未發送的位置
- 如果發送成功,位置(一個或多個)從數據庫
現在這種行爲發生的每一次位置read.The用戶可能行走這需要一些時間,使50米或刪除驅動速度很快,而許多讀取操作可能會完成,而且數據庫插入/檢索操作可能會變得麻煩。因此,其中一個主要要求就是在讀取它們時順序處理所有讀取位置。就像:讀取位置1,插入它,發送它...讀取位置2,插入它,發送它。
我找不到一個合適的方法來做到這一點。如您所知,該服務與應用程序在相同的主線程中運行,因此我肯定需要使用線程來保持UI運行平穩。
我想使用的ExecutorService和Executors.newSingleThreadExecutor()到每一個位置的讀取時間提交新的線程。通過這種方式,我確保處理是按順序完成的,但是......我爲每次讀取創建新線程,這可能不是什麼好事。
對於這種情況,你會建議什麼最好的方法?
是的,使用ExecutorService&Executors.newSingleThreadExecutor()....或者將所有東西包裝在async服務器中 – petey