4.2 Actividad en segundo plano: límites, optimización y permisos especiales

4.2 Actividad en segundo plano: límites, optimización y permisos especiales

Límites de ejecución en segundo plano

Android aplica restricciones para preservar batería y recursos. Desde Android 8.0 (Oreo) y posteriores el sistema controla:

  • Background Execution Limits: los servicios iniciados en segundo plano disponen de tiempo limitado para ejecutarse.
  • Doze y App Standby: el dispositivo entra en modo reposo, bloqueando tareas programadas y conexiones de red.
  • Limitación de AlarmManager: restricciones en alarmas repetitivas y exactas.
  • Restricciones de broadcasts implícitos: solo se reciben si están registrados dinámicamente o son explícitos.

Optimización de actividades en segundo plano

Para mejorar rendimiento y compatibilidad con las políticas del sistema:

  1. Usar WorkManager para tareas diferidas con restricciones de red, batería y almacenamiento.
  2. Emplear JobScheduler en versiones de Android a partir de API 21.
  3. Evitar wakelocks prolongados optar por WakefulBroadcastReceiver o WorkManager que maneja sus propios wakelocks.
  4. Agrupar operaciones de red y sincronizaciones en lotes para reducir wakeups.
  5. Configurar esquemas de reintento con exponential backoff en tareas fallidas.
  6. Si la tarea es crítica, usar servicios en primer plano (foreground service) con notificación persistente.

Permisos especiales

Para ejecutar trabajos fuera de los límites predeterminados, es necesario solicitar permisos o ajustes adicionales:

  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: permite esquivar Doze. Requiere llevar al usuario a la pantalla de optimización de batería.
  • FOREGROUND_SERVICE: necesario para iniciar servicios en primer plano en Android 9 y superior, junto con una notificación persistente.
  • USE_SCHEDULE_EXACT_ALARM: desde Android 12, para programar alarmas exactas con AlarmManager.
  • ACCESS_BACKGROUND_LOCATION: para obtener ubicación en segundo plano en Android 10 y posteriores.
  • ACTIVITY_RECOGNITION: para detectar actividad física y contexto del usuario.

Flujo de solicitud de permisos

  1. Declarar el permiso en el archivo AndroidManifest.xml.
  2. Verificar el estado del permiso en tiempo de ejecución.
  3. Solicitar al usuario mediante la API de permisos o, en el caso de optimizaciones de batería, mediante un Intent al panel de ajustes.
  4. Gestionar la respuesta en el callback correspondiente para adaptar la lógica de la app.

Profundizando sobre: 4.2 Actividad en segundo plano: límites, optimización y permisos especiales

Libros recomendados:

  • Android Programming: The Big Nerd Ranch Guide de Bill Phillips, Chris Stewart y Kristin Marsicano. Capítulo sobre servicios en segundo plano y optimización.
  • Android Cookbook de Ian F. Darwin. Recetas prácticas para WorkManager, JobScheduler y límites de ejecución.
  • Android Internals:: A Confectioners Cookbook de Jonathan Levin. Análisis profundo de la arquitectura y políticas de límites de procesos.
  • Pro Android with Kotlin de Peter Späth. Sección dedicada a gestión de permisos especiales y optimización de tareas en segundo plano.

Recursos en línea y documentación oficial:

PreviusNext


¿Necesitas ayuda con este punto? Nuestra IA te puede ayudar

  • Hola 👋 , soy la IA de Synzen.org, puedes preguntarme siempre sobre la página donde estás leyendo, yo también la leo, así que puedo ayudarte a entenderlo, expandirlo, ponerte ejercicios…¡y mucho más!
Quiero saber más sobre… ...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *