2011-10-07 67 views
2

我有一個利基應用程序,需要每隔幾秒向服務器發送一個服務器的位置。 (不要擔心手機的電池壽命)。我將如何每隔幾秒就創建一個線程或執行某些操作?我有一個gpslistener,但其子類的名稱是"onlocationchanged"似乎只想提供信息,如果位置發生變化,我將需要一個更新的位置發送到服務器每次雖然我定義的時間間隔Android make方法每X秒運行一次(涉及gps和服務器調用)

如何我這樣做?

洞察理解

回答

8

放置這在服務的onCreate

mTimer.scheduleAtFixedRate(new TimerTask() { 
    @Override 
    public void run() { 
      // What you want to do goes here 
     } 
    }, 0, REFRESH_TIME); 

REFRESH_TIME是以毫秒爲單位的頻率或時間,當run重複其自身。

+0

是什麼數據類型'mTimer' – CQM

+1

mTimer是Timer類。 – blessenm

+0

Java定時器運行在一個單獨的線程中,更多的Android-y方法是使用Handler。另一方面,一個網絡請求應該最好發生在一個單獨的線程無論如何.. – Delyan

1

你不能只問android當前位置。 GPS需要一些時間,可能無法使用。這在post中有說明。

你可以做的是使用像由user500865提到的一個定時器,然後請求最後已知的位置這樣

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 1, this); 
Location l = null; 
l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

您可以跟蹤的最後位置的,如果新的做一些邏輯位置不同或相同。

方法requestLocationUpdates具有以下參數:

minTime用於通知-the最小時間間隔,以毫秒爲單位。此字段僅用作節省電量的提示,位置更新之間的實際時間可能大於或小於此值。

minDistance纔會的通知-the最小距離間隔,單位爲米

使用這些定義要如何往往能得到一個位置更新

+0

謝謝我做了這個和計時器線程 – CQM