Controls and widgets don't update often, so having to redraw them every screen update is a silly use of resources and battery power, therefor we need to cache them into their sprites and only redraw them when they change state.
Easy for controls as they change on a user interaction or when they are initially drawn, but widgets can change in the background, so we need to find a way to know they have changes so we can force a redraw.
Controls and widgets don't update often, so having to redraw them every screen update is a silly use of resources and battery power, therefor we need to cache them into their sprites and only redraw them when they change state.
Easy for controls as they change on a user interaction or when they are initially drawn, but widgets can change in the background, so we need to find a way to know they have changes so we can force a redraw.