2011-08-22 98 views
0

我正在开发一个绘制地图的应用程序。线程绘制

目前我的逻辑是这样的:

1) 我有一个活动与层(瓷砖,线条,方格等)的集合。

2) 在显示保存画布的视图的活动中。

3) 然后在这个视图中我称之为“RenderAll”。会发生什么是我遍历所有图层并在其中的每一层上调用渲染过程。我将画布发送给我的渲染器,并将东西涂在画布上。完成后,onDraw会在我的视图中调用,并且图像已完成并在视图中绘制。

我想要的是每个图层都分开绘制。意思是,我必须画出不同的线索。所以,当我的地图移动时,首先绘制瓦片,然后是线条等。另外我需要通过移动我的地图来取消任务。

有人可以请教我一个很好的教程如何做到这一点?我是新的多线程...

谢谢。

回答

2

首先,请阅读本:http://download.oracle.com/javase/tutorial/essential/concurrency/

然后重新考虑你的设计。你真的想移动街道名称,然后街道?记住:这可能需要时间,所以几秒钟后用户会看到“错误”的图片。还有更多:你有多少层?如果图层的数量可能增加(例如自定义标题,商店名称等),则设计中的线程数量也会增加,这似乎不是一个好主意。

为什么不让一个绘图线程按顺序绘制所有图层?它可能会比多线程解决方案工作得更快,并且更容易实现。

+0

嘿!实际上你描述的问题不能发生。目前,当我平移地图时,所有图层都会在画布中呈现并绘制。我得到一个新的图像,然后我显示。我想先显示瓷砖,然后再显示其他图层(按某种顺序)。如果我在渲染仍在工作的同时平移地图,我想要取消该任务,然后重新渲染。你有没有关于你的“顺序”提案的例子? – no9