Не думаю, что есть более "элегантное" решение, чем Activity.runOnUiThread(Runnable)
или View.post(Runnable)
. Вы, наверное, уже видели обсуждение потоков в документации для Android:
EDIT:
http://android -developers.blogspot.com / 2009/05 / безболезненным-threading.html
Как там указано, инструментарий пользовательского интерфейса Android не является поточно-ориентированным, поэтому все взаимодействие с ним должно происходить в одном потоке, а именно в потоке пользовательского интерфейса приложения; и если вы собираетесь передавать работу из одного потока в другой, вам потребуется объект Runnable, чтобы инкапсулировать выполняемую работу.
Я знаю, что анонимные внутренние классы могут выглядеть довольно грязно, но они довольно распространены в Java, поскольку они наиболее близки к замыканиям , доступным в языке. Итак, IMO лучше всего стиснуть зубы и использовать Activity.runOnUiThread(Runnable)
и напомнить себе, что элегантность в глазах программиста.