Skip to content

Inject on TileService #102

@feragusper

Description

@feragusper

¡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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions