Метод onDraw может вызываться несколько раз при отрисовке представления по разным причинам, например:
- Бесконечный цикл из вызовов setWidth() и setHeight(). stackoverflow.com Они внутренне вызывают метод invalidate(), который затем снова вызывает onDraw() для продолжения цикла. stackoverflow.com Чтобы избежать этого, вызовы следует переместить за пределы реализации onDraw. stackoverflow.com
- Рекурсивный вызов метода invalidate(). www.cyberforum.ru Например, если по завершению метода onCreate() вызывается несколько раз invalidate(), а потом входит в бесконечный цикл вызов onDraw метода. www.cyberforum.ru
Также несколько раз метод onDraw может вызываться, если при отрисовке представления каждый раз создаются ненужные объекты. habr.com Чтобы избежать этого, соответствующую часть кода следует вынести за пределы метода onDraw. habr.com