2016-05-14 18 views
2

我正在嘗試構建一個必須每x秒更新一個標記的應用程序。好的,我已經完成了。這裏是我的onCreate方法的代碼:來自Google地圖的Java更新標記

h = new Handler(); 

     h.postDelayed(new Runnable(){ 
      public void run(){ 

       atualizaMapa(); 

       h.postDelayed(this, delay); 
      } 
     }, delay); 

的問題是:當我使用谷歌地圖和拖動標記或信息窗口打開時,該過程得到的一點點鎖(x秒我放置),然後我可以正常拖動標記,並在10秒鐘後再次鎖定... 10秒鐘後再次鎖定...我嘗試過所有事情,但沒有成功。有人可以幫我解決這個問題嗎?

標記被更新atualizarMapa(),這個方法訪問我的web服務,並得到一個JSON響應...

回答

0

使用postDelayed()方法,

導致要添加到郵件了Runnable [R隊列,在指定的時間過後運行。 runnable將在該處理程序所連接的線程上運行。時間基準是uptimeMillis()。在深度睡眠中度過的時間會增加執行的延遲時間。

最重要的是,

在發佈或發送到Handler,您可以允許儘快處理該項目的消息隊列是願意這樣做,或指定一個延遲在它被處理之前或它被處理的絕對時間。後兩者允許您實現超時,滴答以及其他基於時間的行爲。

您使用的方法會影響您的應用程序或消息計劃的行爲。

+0

我能做些什麼來解決這個問題?我意識到另一件事情,當我使用setPosition方法時,在我的應用程序中只是這個命令,它沒有得到延遲而沒有制動,但是當我每隔x秒使用一次命令獲取數據時,它就會制動應用程序。 –

+0

還有另一種方法來執行每x秒更新我的標記谷歌地圖?一種不會制動應用程序的方法? –

+0

我想我已經添加一個線程來做到這一點?並且我需要知道過程何時完成?像這樣? –