O que aciona a medida de uma View () a ser chamada

Na minha aplicação, tenho um loop infinito em uma das substituições onMeasure () do meu View. Depurando o código-fonte a partir de um ponto de interrupção no meu onMeasure, sou capaz de rastrear todo o caminho da pilha até o compasso () do PhoneWindow $ DecorView (a classe mais alta da minha hierarquia de exibição), chamada por ViewRoot .performTraversals (). Agora, a partir daqui, se eu continuar avançando, finalmente recebo a medida () do PhoneWindow $ DecorView chamada novamente por uma mensagem na classe Looper.loop (). Suponho que algo tenha colocado na fila uma mensagem que ele precisa medir, como uma invalidaçã

minha pergunta é: o que aciona a necessidade de uma chamada de medida em uma Visualizaçã

Pelo meu entendimento do processo de layout / medida / desenho, isso só ocorrerá quando o método invalidate () for chamado em uma exibição específica, e isso ocorrerá e executará um passe de layout / medida / desenho para essa exibição invalidada e todos de seus filhos. Suponho que, de alguma forma, minha principal visualização na minha hierarquia de visualizações esteja sendo invalidada.

No entanto, eu coloquei explicitamente um ponto de interrupção em todas as chamadas inválidas que tenho e não as estou chamando de maneira infinita. Então, eu não acho que seja esse o caso. Existe outra maneira de acionar um passe de medida? Alguma coisa poderia estar provocando isso internamente? Estou meio sem ideias depois de ver que nada invalida o infinito.

questionAnswers(2)

yourAnswerToTheQuestion