Saltar al contenido

Entre bastidores

Qué le hace una detención forzada a tu luz de notificación

Por el equipo de llcloud 5 min de lectura

Respuesta rápida

En Android, detener a la fuerza una app también desactiva su servicio de accesibilidad, tanto en Android puro como en Samsung, Xiaomi y otros móviles. Una app no puede volver a activar su propio servicio de accesibilidad, porque Android lo reserva para el sistema y para ti. AuraDisplay no puede evitar todas las detenciones, así que reduce las probabilidades con Mantener AuraDisplay en ejecución, detecta cuándo el servicio está apagado y envía un aviso con un botón Volver a activar.

Si usas AuraDisplay en un móvil con un gestor de batería estricto, quizá te haya pasado esto: la luz se para, abres la app y el interruptor de accesibilidad está apagado. Tú no lo apagaste. Nada se cerró con un error. Lo hizo el móvil, y de una forma que la app no puede deshacer por sí sola. Este artículo explica qué ocurre, por qué Android funciona así y qué hemos construido alrededor de ello.

¿Qué ocurre realmente en una detención forzada?

Una detención forzada es la forma más fuerte que tiene Android de cerrar una app. Termina el proceso de la app, cancela su trabajo programado e impide que vuelva a arrancar en segundo plano hasta que algo concreto la despierte. Puedes hacerlo tú con Forzar detención en la página de información de una app, pero lo más habitual es que venga de una app limpiadora o de las herramientas de batería del propio fabricante, que pueden detener apps que creen que gastan demasiada energía.

Para la mayoría de las apps, una detención forzada es una molestia. Para una app construida sobre un servicio de accesibilidad, es más que eso. Cuando se detiene la app a la fuerza, Android también apaga su servicio de accesibilidad. No es una rareza de una marca. Podemos reproducirlo en un Pixel con Android puro con un solo comando, y se comporta igual en Samsung, Xiaomi y otros móviles.

AuraDisplay usa dos permisos, y reaccionan de forma distinta:

Permiso Para qué lo usa AuraDisplay Tras una detención forzada
Acceso a notificaciones Saber que llegó una notificación y qué app la envió Sigue concedido, y Android lo reconecta
Servicio de accesibilidad Dibujar la luz sobre la pantalla de bloqueo y el Always On Display Apagado hasta que lo vuelvas a activar

Esa diferencia es toda la historia. La parte que oye las notificaciones vuelve, y la parte que dibuja la luz no.

¿Por qué una app no puede volver a activar su propio servicio de accesibilidad?

Porque Android no la deja, y con buen motivo. Un servicio de accesibilidad puede ver y manejar lo que hay en pantalla, y por eso lo usan las apps para quienes necesitan ayuda con el móvil. Ese poder es también la razón de que Android insista en que sea una persona, y no una app, quien decida qué servicios están activos.

El ajuste que lista los servicios de accesibilidad activos solo se puede cambiar con un permiso protegido que las apps normales de Google Play no pueden tener. Así que tras una detención forzada no hay ninguna API, ningún truco ni ningún ajuste oculto con el que AuraDisplay pueda activarse otra vez. Las apps que sí reactivan servicios de accesibilidad lo consiguen con herramientas de desarrollo o con root, que una instalación normal de Google Play no tiene.

Nos parece la regla correcta. Significa que cualquier arreglo tras una detención forzada necesita un toque tuyo, así que nuestro trabajo es que ese toque sea lo más fácil posible y que haga falta lo menos posible.

¿Qué hace AuraDisplay al respecto?

Lo pensamos en tres capas: hacer menos probable una detención, detectar cuándo ocurre y agilizar la reparación. Ninguna capa sustituye a las otras.

Prevención: Mantener AuraDisplay en ejecución

Mantener AuraDisplay en ejecución es una opción gratuita en los ajustes de la app. Ejecuta AuraDisplay como un servicio en primer plano, que lleva una notificación y que Android considera más importante que una app normal en segundo plano. En los móviles que cierran apps por su cuenta, eso reduce las probabilidades de una detención.

Aquí tomamos dos decisiones a propósito. La notificación se puede descartar deslizándola, y una vez que lo haces se queda descartada en lugar de reaparecer de inmediato. Y nunca la describimos como una armadura. Algunos gestores de batería, Device Care de Samsung entre ellos, pueden detener a la fuerza una app incluso mientras funciona así. Ayuda, pero no es una garantía.

Detección: darse cuenta de que la luz está apagada

Recuerda que el acceso a notificaciones sobrevive a una detención forzada y Android lo reconecta. Esa reconexión es el único momento en que AuraDisplay vuelve a ejecutarse sin que lo abras, así que es ahí donde comprueba. Poco después de reconectarse, mira si el servicio de accesibilidad está activo. Si está apagado, sabe que la luz está muerta.

AuraDisplay también lo detecta desde el otro lado. Si siguen llegando notificaciones y ninguna se dibuja, algo está bloqueando la luz, y eso activa la misma comprobación.

Reparación: un toque para volver

Cuando el servicio está apagado, AuraDisplay te envía un aviso con un botón Volver a activar. Abre los ajustes de accesibilidad del móvil justo en la entrada de AuraDisplay, así que solo activas un interruptor. Si nunca has activado el servicio, primero ves la explicación del permiso de AuraDisplay, porque nadie debería activar un servicio de accesibilidad sin saber por qué.

El aviso es una notificación, así que necesita que AuraDisplay pueda enviarlas. Si las desactivaste, la advertencia no tiene forma de llegarte.

Cuando la luz vuelve, AuraDisplay te ofrece los ajustes que hacen menos probable la siguiente detención: el interruptor de segundo plano o inicio automático del fabricante, la optimización de batería y Mantener AuraDisplay en ejecución.

¿Cómo hacer que las detenciones forzadas sean menos frecuentes en tu móvil?

Los ajustes varían según la marca, y también lo agresivo que es el móvil. Empieza por el panorama general en por qué Android cierra apps en segundo plano y sigue la guía de tu móvil:

Una cosa más que conviene revisar: si usas un limpiador o una app de «aceleración», comprueba si detiene a la fuerza otras apps. Algunas lo hacen, y cada detención vuelve a apagar la luz.

Por qué te lo contamos

Sería más fácil decir «mantén la app en ejecución y funcionará». Tampoco sería cierto en todos los móviles. Una luz de notificación que se apaga en silencio es peor que una que te dice que necesita un toque, así que decidimos construir en torno a la versión honesta. Si tu móvil sigue apagando AuraDisplay incluso después de todo esto, envíanos por correo un informe de diagnóstico desde la app. Esos informes son como aprendemos lo que hace realmente cada móvil.

Preguntas

¿Forzar la detención desactiva la accesibilidad en Android?

Sí. Cuando una app se detiene a la fuerza, Android también desactiva el servicio de accesibilidad de esa app. Lo vemos en Android puro, no solo en móviles con gestores de batería agresivos. La detención puede venir del botón Forzar detención de los Ajustes, de una app limpiadora o de las herramientas de batería del fabricante, y el servicio sigue apagado hasta que alguien lo vuelve a activar.

¿Por qué la app no puede volver a activar su servicio de accesibilidad?

Porque Android no lo permite. Cambiar qué servicios de accesibilidad están activos requiere un permiso protegido del sistema que las apps normales de Google Play no pueden tener. Un servicio de accesibilidad es muy potente, así que Android quiere que sea una persona quien tome esa decisión en los Ajustes. Lo máximo que puede hacer una app es detectar que está apagado y llevarte al interruptor correcto.

¿Mantener AuraDisplay en ejecución impide las detenciones forzadas?

Las hace menos probables, pero no es una garantía. La opción ejecuta AuraDisplay como un servicio en primer plano con una notificación, algo que Android considera más importante que una app en segundo plano. Algunos gestores de batería, como Device Care de Samsung, pueden detener a la fuerza una app incluso así. Por eso AuraDisplay también vigila si el servicio se apaga y te lo dice.

¿Cómo sé si mi móvil está deteniendo a la fuerza AuraDisplay?

Si el interruptor de accesibilidad de AuraDisplay está apagado sin que lo hayas tocado, lo más probable es una detención forzada. AuraDisplay envía un aviso cuando detecta que el servicio está apagado. Si sigue pasando, sigue la guía de la marca de tu móvil y envía un informe de diagnóstico desde la app para que veamos qué hace el móvil.

Sigue leyendo