我有服务和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...}
}
}
答案 0 :(得分:0)
您无法在后台服务中拥有UI代码。服务中运行的任何内容都在后台线程而不是应用程序的UI线程上运行,这意味着您无法从那里进行UI更改。这就是你得到错误的原因。
如果你坐下来思考它,那么在架构上没有理由在后台服务中使用UI代码。绘制地图是纯粹的前景操作,一旦地图活动被解除,它就不再重要。因此,不需要在服务中保留背景代码 - 所有覆盖代码都属于前景地图活动。