我有一个活动(实际上是MapActivity),它有一个带有mapView和textView的linearLayout,用于显示当前速度等。问题是我希望textView每0.5秒更新一次,例如。
我知道这可以通过服务来完成(至少我学会了这样做),但我想知道是否可以在MapActivity本身内部使用Timer来实现。我试过这种方法:
onCreate{
...
updateTimer = new Timer();
updateTimer.scheduleAtFixedRate(doRefresh, 0, updateInterval);
}
private Timer updateTimer;
private TimerTask doRefresh = new TimerTask()
{
public void run()
{
updateData();
}
};
private void updateData()
{
//update the textView with the data
}
private int updateInterval = 500;
但是,它给了我以下错误:
04-10 22:24:56.529: ERROR/AndroidRuntime(9434): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
那么,是否可以在不使用服务类的情况下以简单的方式做我正在尝试的事情?
谢谢你,问候, =)
答案 0 :(得分:0)
在某个小部件上调用postDelayed()
,提供Runnable
和500
作为延迟。 Runnable
应该执行您想要完成的任何工作,然后再次调用postDelayed()
作为Runnable
和500
作为延迟。
这可以避免后台线程和服务,这对于活动中的简单计时事件不是必需的。