1. constructor() / init
Что делает: создаёт View, инициализирует поля
Вызывается: при создании View — через XML или программно
Аналогия: ты строишь мебель по инструкции — ещё ничего не стоит, но детали есть.
2. onAttachedToWindow()
Что делает: сообщает, что View добавлена в иерархию окна
Вызывается: после того, как View прикреплена к окну
Аналогия: ты поставил мебель в комнату — теперь она “живая” и часть системы
Полезно для:
- подписок на
LiveData,Flow,BroadcastReceiver - запуска анимаций
3. onMeasure(widthSpec, heightSpec)
Что делает: определяет размер View
Вызывается: системой перед размещением View
Аналогия: ты измеряешь ширину и высоту шкафа, прежде чем вставить его в угол
Важно: обязан вызвать setMeasuredDimension(width, height)
4. onLayout(changed, left, top, right, bottom)
Что делает: размещает дочерние View внутри себя
Вызывается: после onMeasure(), если размеры или положение изменились
Аналогия: ты ставишь ящики и полки внутри шкафа
В ViewGroup, обязательно вызываешь child.layout(...)
5. onDraw(canvas)
Что делает: рисует содержимое View
Вызывается: каждый раз, когда нужно перерисовать
Аналогия: ты разукрашиваешь фасад шкафа краской
6. onDetachedFromWindow()
Что делает: сигнализирует, что View удалена из окна
Вызывается: при удалении, уничтожении Activity, Fragment
Аналогия: ты выносишь мебель из комнаты
Здесь: отписываемся от потоков, снимаем слушателей, останавливаем анимации