В моем приложении у меня есть бесконечный цикл для одного из переопределений onMeasure () моего View. Отлаживая исходный код, начиная с точки останова в моем onMeasure, я могу проследить себя по всей трассе стека вплоть до меры PhoneWindow $ DecorView () (самый верхний класс в моей иерархии представлений), который вызывается ViewRoot .performTraversals (). Теперь отсюда, если я продолжу перешагивать, я в конечном итоге получу снова метод measure () $ Phoneorindow $ DecorView с помощью сообщения в классе Looper.loop (). Я предполагаю, что что-то поставило в очередь сообщение, которое нужно переизмерить, как недействительный.
У меня вопрос: что инициирует необходимость вызова меры в представлении?
Из моего понимания процесса компоновки / измерения / рисования, это произойдет, только когда метод invalidate () вызывается для определенного представления, и это будет уменьшаться и выполнять передачу макета / измерения / отрисовки для этого представления, признанного недействительным и все его дети. Я бы предположил, что каким-то образом мой самый лучший вид в моей иерархии видов становится недействительным.
Тем не менее, я явно поставил точку останова на каждом отдельном вызове аннулирования, который у меня есть, и не вызываю инвалидацию каким-либо бесконечным образом. Поэтому я не думаю, что это так. Есть ли другой способ инициировать проход измерения? Может ли что-то внутренне вызвать это? Я как бы вне идей, когда вижу, что ничто не лишает силы бесконечность.