2011-01-09 21 views
0

我正在嘗試編寫一個android程序,該程序以固定的時間間隔(例如每1分鐘)獲取一個GPS信號。由於requestLocationUpdate函數沒有完全實現,所以我試圖用task來完成它。GPS無法在TimerTask中運行

public class getGPS extends TimerTask{ 
    public void run(){ 
     System.out.println("Running a GPS task"); 
     locHandler = new locationUpdateHandler();  


     myManager.requestLocationUpdates(provider, 60000, 0, locHandler); 


    } 
} 


public void LoadCoords(){ 

    Timer timer = new Timer(); 
    timer.scheduleAtFixedRate(new getGPS(), 0, 60000); 
} 

然而,從我所看到的,requestLocationUpdates會如果我把它裏面LoadCoords()運行正常,但如果我把它放在裏面的TimerTask(即沒有綠色的圖標在任務欄上不會跑顯示GPS正在尋找修補程序)。

任何人都可以請建議一種替代方法或僞代碼,或糾正我的錯誤,如果有的話?先謝謝你。

回答

0

由於doc表示:調用線程必須是Looper線程,例如調用Activity的主線程。換句話說,您應該從主UI應用程序線程調用myManager.requestLocationUpdates(provider, 60000, 0, locHandler);。在你的情況下,從TimerTask不起作用,因爲TimerTasks在單獨的線程上由Timer執行。

檢查Painless Threading article以找出最適合的解決方案。