The updateComplete event is dispatched from all UIComponents after they have been through the validation phase in the rendering lifecycle. It is called after the commitProperties(), measure(), and updateDisplayList() methods have been called.
This method will only be called when the component is invalidated. Some components will not be invalidated very often during their lifecycle if their size is constant and they do not perform rendering updates or have their properties changing. Other components, however, will dispatch this event quite often as they respond to user input or other events to update themselves.
The updateComplete event is not actually dispatched from code inside UIComponent, however. It is dispatched from the LayoutManager after it has completed validating the UIComponent.
The event is dispatched during phased and non-phased instantiation after all the phases have been completed in the private function doPhasedInstantiation():
This method is the core lifecycle method for components in Flex. The LayoutManager uses phased instantiation during the initial load of your application and will then disable it after it is complete. You can also see that LayoutManager dispatches this event on itself after all components have been updated (some components such as UIComponent and Container listen for this).
The updateComplete event will also be dispatched for a UIComponent when the validateNow() method is called.