● Dependency Holder: It acts as a central place or "toolbox" where instances of dependencies (like repositories, data sources, or factories) are created and stored.
● Manual Dependency Injection: It facilitates manual DI by providing a way for components (like Activities) to retrieve the dependencies they need from this shared container, rather than creating them themselves or using global singletons directly.
● Scoping: For larger applications, the AppContainer can also manage smaller, nested containers (sometimes called flow containers) to handle dependencies that should only live for a specific feature flow (e.g., a login flow).