Возможное исправление - синхронизация переключателя с помощью Display.callSerially (). Мерцание, вероятно, вызвано тем, что приложение пытается рисовать на экране, пока переключение Canvas все еще продолжается. callSerially () должен дождаться завершения перерисовки, прежде чем снова попытаться вызвать run ().
Но все это полностью зависит от телефона, так как многие устройства не поддерживают callSerially (), не говоря уже о реализации, указанной в официальной документации. Единственные устройства, которые, как мне известно, правильно работали с callSerially (), были телефоны Siemens.
Другой возможной попыткой было бы установить Thread.sleep () чего-то огромного, например, 1000 мс, чтобы убедиться, что вы предварительно вызвали свой метод setCurrent (). Таким образом, устройство может внести изменения до того, как отображаемые попытки нарисовать.
Наиболее вероятная проблема заключается в том, что это проблема устройства, а гарантированное исправление мерцания очень простое - используйте один Canvas. Вероятно, не то, что вы хотели услышать, хотя. :)