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