Несколько рекомендаций, как предотвратить лишние вызовы onDraw в пользовательских View:
- Не выполнять вычисления и не создавать объекты в методе onDraw. 4 Создание новых объектов может спровоцировать сборку мусора, что приводит к паузам и лагам пользовательского интерфейса. 4 Объекты Paint следует создавать при инициализации view и переиспользовать их в методе onDraw. 4
- Избегать частого вызова метода invalidate. 4 Большинство вызовов onDraw происходит в результате отработки этого метода, поэтому его следует вызывать только в случае, когда требуется изменение внешнего вида представления. 2
- Уменьшать вложенность view. 4 Для создания плавного интерфейса нужно создавать кастомные плоские view вместо нескольких вложенных стандартных лэйаутов. 4
Также можно попробовать использовать метод view.setWillNotDraw(true). 1