Summary
In this chapter, we analyzed the concept of DI and how it should be applied in order to separate concerns and prevent objects from having the responsibility of creating other objects and how this is of great benefit for testing. We started the chapter by analyzing the concept of manual DI. This served as a good example of how DI works and how it can be applied to an Android application; it served as the baseline when comparing the DI frameworks.
We also analyzed two of the most popular frameworks that help developers with injecting dependencies. We started with a powerful and fast framework in the form of Dagger 2, which relies on annotation processors to generate code to perform an injection. We also looked into Koin, which is a lightweight framework written in Kotlin with slower performance but a simpler integration and a lot of focus on Android components.
The exercises in this chapter were intended to explore how the same problem can be solved using multiple...