Examples of Dependency Injection usage in production apps?

Dependency Injection (DI) is a design pattern used to implement IoC (Inversion of Control), allowing for better decoupling of code and easier testing. Many production Android apps leverage DI frameworks like Dagger, Hilt, or Koin to manage dependencies effectively. Below are a few examples of how DI is used in popular Android applications.

// Example using Hilt in an Android app @HiltAndroidApp class MyApplication : Application() {} @Module @InstallIn(ActivityComponent::class) object NetworkModule { @Provides fun provideRetrofit(): Retrofit { return Retrofit.Builder() .baseUrl("https://api.example.com") .addConverterFactory(GsonConverterFactory.create()) .build() } } @ActivityScoped class MyRepository @Inject constructor(private val retrofit: Retrofit) { fun fetchData() { // Implementation for fetching data } } @AndroidEntryPoint class MainActivity : AppCompatActivity() { @Inject lateinit var repository: MyRepository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) repository.fetchData() } }

dependency injection android apps Hilt Dagger Koin production app