从服务更新UI MapView

时间:2012-01-09 01:35:46

标签: java android google-maps service

我有服务和mapActivity。 我想更新mapview fromfrom serivce(绘制新的oerlays,让我们说每15秒。) 我收到错误: 无法在未调用looper.prepare();

的线程内创建处理程序

我的代码:

private void startService() { 

     timer.scheduleAtFixedRate( new TimerTask() { 

    public void run() { 
    MyMap map = new MyMap(); // here is where app crashes...}

}    
}

1 个答案:

答案 0 :(得分:0)

您无法在后台服务中拥有UI代码。服务中运行的任何内容都在后台线程而不是应用程序的UI线程上运行,这意味着您无法从那里进行UI更改。这就是你得到错误的原因。

如果你坐下来思考它,那么在架构上没有理由在后台服务中使用UI代码。绘制地图是纯粹的前景操作,一旦地图活动被解除,它就不再重要。因此,不需要在服务中保留背景代码 - 所有覆盖代码都属于前景地图活动。