-
Notifications
You must be signed in to change notification settings - Fork 0
Description
¡Sí, Fer! Podés usar EntryPointAccessors para inyectar dependencias en un TileService (o Tile con Jetpack Compose en Wear OS), ya que los tiles no son componentes compatibles directamente con Hilt como lo son las Activities o ViewModels.
👇 ¿Cómo hacerlo en un TileService (o WearTile)?
Definí un @entrypoint para lo que necesitás inyectar:
kotlin
Copy
Edit
@entrypoint
@Installin(SingletonComponent::class)
interface MyTileEntryPoint {
fun userRepository(): UserRepository
}
Usá EntryPointAccessors en tu TileService o TileRenderer:
kotlin
Copy
Edit
class MyTileService : TileService() {
override fun onTileRequest(requestParams: RequestBuilders.TileRequest): ListenableFuture {
val entryPoint = EntryPointAccessors.fromApplication(
applicationContext,
MyTileEntryPoint::class.java
)
val userRepository = entryPoint.userRepository()
// Usá el repositorio como quieras
// ...
}
}
🧠 ¿Por qué?
TileService, como BroadcastReceiver o Worker, no puede recibir inyecciones automáticas de Hilt.
Pero EntryPointAccessors te permite acceder al container de Hilt manualmente, y con eso podés recuperar lo que necesites.
🆘 Tip extra
Si usás Compose en tiles (por ejemplo con Glance o TileRenderer), también podés hacer esto dentro de tu TileRenderer o TileLayout logic, ya que igual no tenés acceso a @androidentrypoint.