从服务更新UI MapView
问题描述:
我有服务和mapActivity。 我想更新mapview outfrom serivce(绘制新的oerlays可以说每15秒) 我得到的错误: 不能创建处理程序内部线程没有调用looper.prepare();从服务更新UI MapView
我的代码:
private void startService() {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
MyMap map = new MyMap(); // here is where app crashes...}
}
}
答
你不能有一个后台服务UI代码。在服务中运行的任何东西都运行在后台线程上,而不是在应用程序的UI线程上运行,这意味着您不能从那里进行UI更改。这就是你得到错误的原因。
如果您坐下来思考一下,架构上没有理由在后台服务中使用UI代码。绘制地图是一种纯粹的前景操作,只要地图活动被解散,它就不再重要。因此,无需在服务中留下背景代码 - 所有覆盖代码都属于前景地图活动。
你得到的错误是什么? – 2012-01-09 02:32:36