Gestionar anuncios AdMob y ciclo de vida en Jetpack Compose
Evita crear vistas y solicitudes duplicadas por recomposición.
Separar el estado del anuncio de la recomposición de la interfaz y liberar recursos.
Por qué es importante
Compose puede recomponer sus funciones muchas veces. Si cada recomposición crea una solicitud, aparecen cargas duplicadas, pérdidas de referencias y diagnósticos confusos. El SDK de anuncios y su ciclo de vida deben integrarse según el formato y la versión empleada.
Requisitos
- Una app Compose y un banner de prueba.
- Conocer AndroidView, DisposableEffect y el ciclo de vida de Activity.
Trabaja en un proyecto de pruebas. Revisa las versiones y condiciones específicas de la documentación oficial, ya que las APIs y las políticas evolucionan.
Implementación
Elige un único formato y consulta la guía…
Elige un único formato y consulta la guía específica del SDK tradicional o Next-Gen antes de escribir la integración.
Crea la vista Android o controlador del anuncio…
Crea la vista Android o controlador del anuncio una sola vez para su ciclo previsto. Separa el cambio de pantalla de la acción de solicitar anuncios.
Evita activar carga directamente en el cuerpo de…
Evita activar carga directamente en el cuerpo de un composable; usa efectos controlados o un propietario apropiado.
Destruye los recursos que lo requieran al salir…
Destruye los recursos que lo requieran al salir de composición o al cerrar la pantalla; revisa las indicaciones oficiales para el formato.
Gestiona estados de cargando, disponible y error sin…
Gestiona estados de cargando, disponible y error sin desplazar bruscamente controles importantes.
Prueba rotación, navegación rápida, cambios de tema y…
Prueba rotación, navegación rápida, cambios de tema y reentrada repetida. Revisa Logcat y el número de cargas.
Fragmento de referencia
@Composable
fun ContenedorVistaAndroid() {
val contexto = LocalContext.current
val vista = remember { android.widget.FrameLayout(contexto) }
DisposableEffect(vista) {
onDispose { vista.removeAllViews() }
}
AndroidView(factory = { vista })
}
// Solo demuestra ownership de la vista; no incorpora SDK AdMob.Ejemplo educativo: cuando se indique, añade las importaciones, dependencias, claves de prueba o clases de tu proyecto. No se presenta como proyecto Android completo y compilado.
Ponlo a prueba
Abre y cierra la pantalla 20 veces, rota el dispositivo y observa si aparecen vistas duplicadas o anuncios superpuestos. Repite con formato de prueba.
Lista de comprobación
- La implementación cumple el objetivo: separar el estado del anuncio de la recomposición de la interfaz y liberar recursos.
- El comportamiento se verificó con datos de prueba y se documentaron los casos de fallo.
- Los recursos, dependencias y políticas se comprobaron contra las referencias oficiales.
- No se registran datos sensibles ni se da por probada una mejora sin evidencia.
Errores habituales
- No cargar anuncios dentro de cada recomposición.
- No reutilizar vistas en dos padres diferentes al mismo tiempo.
- No confundir este contenedor genérico con una implementación completa de AdMob.
¿Por qué no incluyes una dependencia del SDK en el fragmento?
Los SDK tradicionales y Next-Gen tienen APIs diferentes; el ejemplo cubre solamente la propiedad del ciclo de vida, y debes seguir la integración oficial específica.
Referencias para ampliar
Consulta las versiones, limitaciones y requisitos vigentes antes de integrar los ejemplos en producción.