In this sample, "the map's onLoad, onZoomStart, and onPanStart events cause the loading icon to appear. The layers' onUpdate events cause the icon to go away."
This requires listening for the onUpdate event on every layer that you add to the map, and anticipating every event which could cause the map to redraw (pan/zoom, previous/next extent, time slider change, etc).
Is there a way to listen at the map level, rather than the layer level? ie, is there an event fired when the map has finished doing everything? What is the last event fired by the map when it redraws for whatever reason?