Попрограммировал тут малость на Андроиде. Точнее после почти года Google так и не прореагировал на мой запрос о ошибке в LiveWallpaper. Сел разбираться сам. Выяснилось что иллюзия перерисовки связана с тем, что используется попеременно четыре буфера экрана. Так что реально никто процессы не форкает как я сначала думал. В процессе расследования выяснилось что для Live Wallpaper вовсе не нужны никакие Handler и внешние генераторы событий. Все весьма легко и просто программируется с помощью стандартных Thread, проблема только в том что как параллельно программировать мало кто понимает, в том числе и те кто писали рекомендации в Google...
Единственно что нужно для LiveWallpaper - взять Canvas с системного Surface... все остальное из рекомендаций Google - фантазии полуграмотных программистов о том как параллельно программировать с помощью событий (похоже привыкли к программированию UI по схеме "языков четвертого поколения").
В результате каждый программный такт запускается новый Thread с новым контекстом и прочее, при этом handler параметры передать не может просто тупо создает и стартует обект не передавая никаких параметров. Более убогого программирования такого рода представить невозможно. Канкретна не зачет Google! Обидно что морочат голову честной публике, я вот то же поначалу делал типа "как положено" "следую рекомендациям производителя", пока не раскопал расследуя проблему с четверной буферизацией, что такое ублюдочное программирование рекомендовать никак нельзя!
Хммм... Thread в Андроиде иногда отваливаются по непонятной пока причине. Лечится это мониторингом и перезапусканием отвалившихся Thread-ов.
No comments:
Post a Comment