Was löst den Aufruf eines measure () der View aus?

In meiner Anwendung habe ich eine Endlosschleife auf einem meiner Ansicht onMeasure() überschreibt. Debuggen des Quellcodes ausgehend von einem break-point in meinem onMeasure, ich bin in der Lage zu verfolgen mich den ganzen Weg bis der stack-trace bis zu den PhoneWindow$DecorView die measure () - (oberste Klasse in meinem View Hierarchy), die aufgerufen wird, durch ViewRoot.performTraversals(). Jetzt von hier aus, wenn ich halten, treten über, ich schließlich die PhoneWindow$DecorView s measure() wieder aufgerufen, indem eine Nachricht in den Looper.loop () - Klasse. Ich vermute etwas in der Warteschlange, eine Nachricht, die es braucht, um nachmessen, wie eine ungültig.

Meine Frage ist, was löst eine Maßnahme nennen, muss auftreten, auf einen Blick?

Aus meinem Verständnis für das layout/Messen/draw-Verfahren, dies wird nur auftreten, wenn die invalidate () - Methode wird aufgerufen, auf eine bestimmte Sicht, und das wird die trickle-down und durchführen eines layout/Messen/zeichnen-pass für diese Ansicht für ungültig erklärt und alle seine Kinder. Ich würde davon ausgehen, dass irgendwie meine oberste View-aus meiner Sicht-Hierarchie ist immer ungültig.

Allerdings habe ich explizit setzen Sie einen break-Punkt auf jedes einzelne invalidate-Aufruf habe ich, und bin kein Aufruf von invalidate in einigen unendliche Weise. Also ich glaube nicht, dass das der Fall ist. Gibt es eine andere Möglichkeit zum auslösen einer Messung bestehen? Könnte etwas intern auslösen? Ich bin Art von Ideen nach sehen, dass nichts unendlich ungültig.

InformationsquelleAutor der Frage C Nick | 2011-08-04

Schreibe einen Kommentar