我有一個利基應用程序,需要每隔幾秒向服務器發送一個服務器的位置。 (不要擔心手機的電池壽命)。我將如何每隔幾秒就創建一個線程或執行某些操作?我有一個gpslistener,但其子類的名稱是"onlocationchanged"
似乎只想提供信息,如果位置發生變化,我將需要一個更新的位置發送到服務器每次雖然我定義的時間間隔Android make方法每X秒運行一次(涉及gps和服務器調用)
如何我這樣做?
洞察理解
我有一個利基應用程序,需要每隔幾秒向服務器發送一個服務器的位置。 (不要擔心手機的電池壽命)。我將如何每隔幾秒就創建一個線程或執行某些操作?我有一個gpslistener,但其子類的名稱是"onlocationchanged"
似乎只想提供信息,如果位置發生變化,我將需要一個更新的位置發送到服務器每次雖然我定義的時間間隔Android make方法每X秒運行一次(涉及gps和服務器調用)
如何我這樣做?
洞察理解
放置這在服務的onCreate
。
mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// What you want to do goes here
}
}, 0, REFRESH_TIME);
REFRESH_TIME
是以毫秒爲單位的頻率或時間,當run
重複其自身。
你不能只問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最小距離間隔,單位爲米
使用這些定義要如何往往能得到一個位置更新
謝謝我做了這個和計時器線程 – CQM
是什麼數據類型'mTimer' – CQM
mTimer是Timer類。 – blessenm
Java定時器運行在一個單獨的線程中,更多的Android-y方法是使用Handler。另一方面,一個網絡請求應該最好發生在一個單獨的線程無論如何.. – Delyan