проблема с вызовом недействительности в потоке асинхронной задачи в Android!

Я пытаюсь вызвать invalidate() из потока asyntask. Я получаю эту ошибку:

10-18 15:14:30.469: ERROR/AndroidRuntime(889): Причина: android.view.ViewRoot$CalledFromWrongThreadException: Только исходный поток, создавший иерархию представлений, может касаться своих представлений.

Строка, которую я использовал:

mainClass.myMapView.invalidate();//где mainClass=основной класс пользовательского интерфейса

Кто-нибудь может подсказать, где моя вина?

Спасибо.

- ахсан


person Ahsan    schedule 18.10.2010    source источник


Ответы (1)


Вы не можете делать что-либо, связанное с пользовательским интерфейсом, из другого потока, отличного от потока пользовательского интерфейса (отсюда его название). Вы должны вызвать invalidate() либо в onPostExecute(), либо в onProgress(). Или используйте runOnUiThread(). (что в основном и делает publishProgress() / onProgress()).

person Felix    schedule 18.10.2010