2011-08-22 84 views
0

我正在開發一個繪製地圖的應用程序。線程繪製

目前我的邏輯是這樣的:

1) 我有一個活動與層(瓷磚,線條,方格等)的集合。

2) 在顯示保存畫布的視圖的活動中。

3) 然後在這個視圖中我稱之爲「RenderAll」。會發生什麼是我遍歷所有圖層並在其中的每一層上調用渲染過程。我將畫布發送給我的渲染器,並將東西塗在畫布上。完成後,onDraw會在我的視圖中調用,並且圖像已完成並在視圖中繪製。

我想要的是每個圖層都分開繪製。意思是,我必須畫出不同的線索。所以,當我的地圖移動時,首先繪製瓦片,然後是線條等。另外我需要通過移動我的地圖來取消任務。

有人可以請教我一個很好的教程如何做到這一點?我是新的多線程...

謝謝。

回答

2

首先,請閱讀本:http://download.oracle.com/javase/tutorial/essential/concurrency/

然後重新考慮你的設計。你真的想移動街道名稱,然後街道?記住:這可能需要時間,所以幾秒鐘後用戶會看到「錯誤」的圖片。還有更多:你有多少層?如果圖層的數量可能增加(例如自定義標題,商店名稱等),則設計中的線程數量也會增加,這似乎不是一個好主意。

爲什麼不讓一個繪圖線程按順序繪製所有圖層?它可能會比多線程解決方案工作得更快,並且更容易實現。

+0

嘿!實際上你描述的問題不能發生。目前,當我平移地圖時,所有圖層都會在畫布中呈現並繪製。我得到一個新的圖像,然後我顯示。我想先顯示瓷磚,然後再顯示其他圖層(按某種順序)。如果我在渲染仍在工作的同時平移地圖,我想要取消該任務,然後重新渲染。你有沒有關於你的「順序」提案的例子? – no9