한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › L2 SO y dispositivo del cliente

Aplicación móvil enviada a segundo plano App suspended in background

ID de la causa co-mobile-bg · Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si sales un momento de la app para ver una notificación, el SO la suspende (suspend) a los pocos segundos y, mientras tanto, el servidor te desconecta.

Por qué Se deja el juego en segundo plano para leer un mensaje o atender una llamada → Efecto El motor del juego detiene la partida y el SO pronto suspende también la app y la red → En pantalla Al volver ya hay desconexión y toca reconectar

Síntomas
Desconexión
Factores
Detención, Pérdida de paquetes
A quién afecta
Solo yo
Cuándo
Tras un rato inactivo, Al hacer ciertas acciones
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Cliente: al volver, reconectar de inmediato y de forma automática con el token de sesión, sin esperar a que la conexión caída expire (retomar la sesión sin volver a iniciar sesión), recibir el estado más reciente de una vez y sincronizarse. Servidor: si se corta el heartbeat, cerrar la conexión pero mantener la sesión del personaje durante un periodo de gracia breve (sin expulsarlo al instante) y, si reconecta dentro de ese plazo, retomarla con el token de sesión.
Cifras de referencia
El motor del juego suele detenerse en el momento en que la app pasa a segundo plano. iOS suspende la app en pocos segundos, o normalmente en unas decenas de segundos si recibe tiempo extra, y Android 14 o posterior congela (freeze) la app que sale de la pantalla a los 10 segundos aproximadamente.
En el gráfico
Desconexión masiva · Desconexiones (timeout de heartbeat), registros de suspensión de la app
Dónde mirar
Cruzar por ID de sesión las horas de suspensión y regreso de la app en el log del cliente (en Unity, OnApplicationPause) con el motivo y la hora de la desconexión en el servidor. En Android, revisar también el motivo de cierre del proceso registrado en ApplicationExitInfo (REASON_LOW_MEMORY, etc.)
Se confirma si
Justo antes de la desconexión por timeout de heartbeat en el servidor, el cliente entró en suspensión, y reconectó nada más volver
Se descarta si
Si la desconexión ocurrió con la app en primer plano: “Expiración del mapeo NAT”, “IP compartida del ISP (CGNAT)” o “Cambio Wi-Fi ↔ LTE/5G”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
Si falta memoria, el teléfono puede llegar a cerrar del todo el juego que está en segundo plano. Por eso, al volver de la cámara o de una app de pago o de autenticación, el juego arranca desde cero. Es más habitual en dispositivos de gama baja.

Fuentes

  1. Extending your app’s background execution time Apple
    Al pasar a segundo plano, applicationDidEnterBackground dispone de 5 segundos y luego la app se suspende; si necesita más, pide tiempo con beginBackgroundTask (el tiempo restante está en backgroundTimeRemaining)
  2. Cached apps freezer Android (Google)
    Android 14 o posterior congela los procesos de apps en estado de caché a los 10 segundos; al congelarse, todos sus hilos se detienen
  3. Application.runInBackground Unity
    Con el valor predeterminado false, se detiene en segundo plano; en Android se detiene en segundo plano sea cual sea el ajuste, e iOS ignora este ajuste
  4. MonoBehaviour.OnApplicationPause(bool) Unity
    Cuando la app se suspende o se reanuda, envía OnApplicationPause(true/false) a todos los MonoBehaviour
  5. ApplicationExitInfo Android (Google)
    REASON_LOW_MEMORY: el low memory killer del sistema terminó el proceso de la app (los dispositivos que no lo admiten lo reportan como REASON_SIGNALED con SIGKILL)

Ver también

Misma capa: L2 SO y dispositivo del cliente

Causas de otras capas con el mismo síntoma (Desconexión)

Ver la ficha interactiva con gráficos y simulaciones