ADK implements a container abstraction on top of dynamic content sources called providers.
Containers attach to selected elements on the page and assume control of their behavior. Containers can for example be configured to lazy load, reload, unload, be sticky and much more. What will be displayed in the element depends on the linked provider.
Providers load content in container elements. The main purpose of the provider is to fetch content when requested and display it in the location designated by the container. A provider could for example load ads from an ad server or render a custom widget.
This separation between behavior and content is useful in that a provider can be replaced or selected dynamically from a set of providers without modifying application logic.