GPS无法在TimerTask内运行

时间:2011-01-09 04:46:54

标签: android gps scheduled-tasks

我正在尝试编写一个安卓时间间隔获取GPS信号的Android应用程序,例如每1分钟一次。由于requestLocationUpdate函数没有完全实现,我尝试使用task来完成它。

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);
}

但是,从我看到的情况来看,如果我把它放在LoadCoords()中,requestLocationUpdates会正常运行,但如果我把它放在TimerTask里面就不会运行(即任务栏上没有绿色图标表明GPS是寻找修复)。

任何人都可以建议一种替代方法或伪代码,或纠正我的错误,如果有的话?提前谢谢。

1 个答案:

答案 0 :(得分:0)

正如doc所说:调用线程必须是Looper线程,例如调用Activity的主线程。换句话说,您应该从主UI应用程序线程中调用myManager.requestLocationUpdates(provider, 60000, 0, locHandler);。在你的情况下,TimerTask不起作用,因为Timer正在一个单独的线程上执行TimerTasks。

检查Painless Threading article以找出最适合的解决方案。