Что в целом представляет собой Dependency Injection. Как этот подход развивался в Java и нашел свое применение в Android-разработке. Какие DI-фреймворки существуют, и как они применяются в проектах Android-приложений сегодня — их достоинства и недостатки.