我正在尝试编写一个安卓时间间隔获取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是寻找修复)。
任何人都可以建议一种替代方法或伪代码,或纠正我的错误,如果有的话?提前谢谢。
答案 0 :(得分:0)
正如doc所说:调用线程必须是Looper线程,例如调用Activity的主线程。换句话说,您应该从主UI应用程序线程中调用myManager.requestLocationUpdates(provider, 60000, 0, locHandler);
。在你的情况下,TimerTask
不起作用,因为Timer
正在一个单独的线程上执行TimerTasks。
检查Painless Threading article以找出最适合的解决方案。