2011-01-09 17 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以找出最适合的解决方案。