Sobes.tech
Intern

¿Cuál es la diferencia entre un servicio en segundo plano y un servicio en segundo plano en Android?

sobes.tech AI

Respuesta de la IA

La diferencia entre un servicio en segundo plano normal y un servicio en segundo plano limitado (restricted) apareció con Android 8.0 (API 26).

Servicio en segundo plano normal:

  • Puede funcionar indefinidamente en segundo plano.
  • El sistema puede detenerlo por falta de recursos, pero puede reiniciarse si se devuelve START_STICKY en onStartCommand().
  • No requiere notificaciones visibles para el usuario (aunque esto no es la mejor práctica desde el punto de vista de UX).
  • Puede consumir recursos significativos de batería y CPU.

Servicio en segundo plano limitado (se aplican restricciones):

  • Un servicio iniciado en segundo plano sin actividades visibles u otras "listas blancas" (condiciones privilegiadas) enfrenta restricciones en el uso de recursos.
  • Las principales restricciones incluyen:
    • Restricción en la ejecución en segundo plano: El sistema puede detener el servicio en poco tiempo (generalmente unos minutos) después de que la aplicación pase a segundo plano.
    • Prohibición de iniciar nuevos servicios en segundo plano: La aplicación en segundo plano no puede iniciar nuevos servicios en segundo plano usando startService(). En su lugar, debe usar JobScheduler o WorkManager.
    • Restricción en la recepción de mensajes broadcast: Los mensajes broadcast implícitos en el manifiesto serán ignorados. La aplicación debe registrar explícitamente receptores de broadcast o usar JobScheduler/WorkManager para manejar eventos.
  • El objetivo de estas restricciones es mejorar la duración de la batería y el rendimiento del dispositivo, limitando el uso irracional de recursos por aplicaciones en segundo plano.

Cómo un servicio se vuelve no limitado (activo a los ojos del sistema):

  • La aplicación está en primer plano (el usuario interactúa activamente con ella).
  • La aplicación inicia un servicio visible (foreground service), que muestra una notificación constante al usuario.
  • La aplicación realiza tareas específicas (por ejemplo, procesamiento de mensajes broadcast, ejecución de tareas JobScheduler) que temporalmente la sacan del estado de trabajo en segundo plano irracional completo.

Diferencia principal: Con Android 8.0 y versiones superiores, un servicio que funciona en segundo plano sin actividad visible del usuario o servicio visible será limitado por el sistema en cuanto al acceso a recursos y la capacidad de trabajar durante mucho tiempo. El "servicio en segundo plano" normal antes de Android 8.0 podía funcionar sin estas restricciones estrictas.