Notas sobre empuñadura y puñal. @HiltAndroidApp. | Autor: Dennis Iluma | Julio de 2021

@HiltAndroidApp Inicie la generación de código de Hilt. Esto creará un contenedor de componentes básicos con todas las dependencias. Ubicado en la parte superior de su aplicación. Todos los demás componentes heredan de él.
Debe anotar la clase de aplicación como se muestra a continuación
@HiltAndroidApp
class MyApplication : Application() ...
@AndroidEntryPoint. Cualquier clase anotada con esto tendrá acceso a todas las dependencias almacenadas en el contenedor de componentes generado @HiltAndroidAppSignifica que otorga a la clase anotada con ella el permiso para usar las dependencias almacenadas en el contenedor de manejadores.
@AndroidEntryPoint
class MyActivity : AppCompatActivity() ...
Cuando se coloca antes de la estafasegundotructor como se muestra a continuación significa que la clase se puede usar como una dependencia.En este caso, se llama Inyección de constructor. Lo que está sucediendo detrás de lo que ve es que se crea una instancia de la clase «AnalyticsAdapter» y se almacena en el contenedor creado en tiempo de compilación.Para que las instancias de esta clase se puedan usar en cualquier lugar con comentarios @Punto de entrada de Android
class AnalyticsAdapter @Inject constructor( private val service: AnalyticsService) …
Cuándo @inyección Colocado en una clase anotada con @AndroidEntryPoint, se llama inyección de campo, como se muestra a continuación.
@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
@Inject lateinit var adapter: AnalyticsAdapter
/*
* This means an object of AnalyticsAdapter is stored as "var adapter" thus we can use all methods and fields difined in AnalyticsAdapter class
*/
Se utiliza para inyectar clases que no se pueden inyectar en un constructor. Estas son clases sin constructores o clases de dependencias de terceros, como Retrofit for Api calls y Room for RoomDB. El siguiente es un ejemplo de cómo utilizar el módulo.
Nota: Utilice módulos junto con @InstallIn () y @Provides
@InstallIn(SingletonComponent::class)
@Module
class AnalyticsModule ... //See interpretation Below
Esto significa que estamos instalando o adjuntando el módulo al contenedor SingletonComponent, que se crea en segundo plano. @HiltAndroidApp Se utilizan anotaciones. Esto significa que el módulo estará disponible en el alcance de SingletonComponent en toda la aplicación.
@InstallIn(SingletonComponent::class)@Module
class AnalyticsModule ...
Agrega un enlace para los objetos que no se pueden construir para ser inyectados para una discusión anterior. En este caso, el objeto devuelto es el objeto utilizado.
@InstallIn(SingletonComponent::class)
@Module
class AnalyticsModule @Providesfun providesAnalyticsService(
converterFactory: GsonConverterFactory): AnalyticsService
return Retrofit.Builder()
.baseUrl("https://example.com")
.addConverterFactory(converterFactory)
.build()
.create(AnalyticsService::class.java)