¿Cuáles son las ventajas/desventajas al colocar un código de acceso de red extenso en un subproceso de una actividad o un subproceso en un servicio? ¿Cómo afectaría la aplicación? Estoy escribiendo un reproductor de audio en tiempo real y, por lo que he leído hasta ahora, poner el código en un servicio seguirá bloqueando la aplicación para que se necesite un nuevo hilo, ¿sabe alguien si tiene más sentido poner este fragmento de código? en un servicio.Subprocesos de aplicación vs Subprocesos de servicio
Respuesta
Sí, una operación de bloqueo en un Servicio seguirá bloqueando la aplicación. A pesar de las primeras apariciones, los Servicios no son simplemente para ejecutar tareas en segundo plano. Son para ejecutar tareas con un ciclo de vida que es independiente del ciclo de vida de la actividad (IE, pueden continuar después de que se cierre la actividad).
Un servicio que se inicia cuando una actividad comienza y finaliza cuando la actividad finaliza es inútil.
En su caso, donde está transmitiendo audio, es posible que desee transmitir audio incluso después de que el usuario cierre la Actividad, en cuyo caso, debe usar un Servicio, pero igual necesitará un hilo (o un AsyncTask) para bloquear tareas.
Según mi experiencia (1+ años desarrollando Android), no hay diferencia entre ejecutar un nuevo hilo en un servicio o en una actividad. Trate de no mantener una referencia a la Actividad en el nuevo hilo: use el contexto de la aplicación.
Además, el ciclo de vida del servicio no ayudó en absoluto, ya que algunos métodos no están garantizados para ser invocados :(
La única diferencia puede ser que el servicio puede ser destruido sin destruir por completo la aplicación - por lo tanto potencialmente destruir los nuevos temas ¿por potencialmente porque en el lado práctico, esto no sucede la aplicación SIEMPRE muere sin matar el servicio antes de eso, es decir:.?. el mecanismo de servicio local es inútil !! !
El servicio remoto es una discusión diferente; me refería solo a "¿dónde debería ejecutar un nuevo hilo?".
¡¡Buena suerte !!!
¿Puede dar una situación en la que necesite ejecutar un nuevo hilo en un servicio en lugar de simplemente ejecutar un nuevo hilo en una actividad para realizar la misma tarea? – committedandroider
@committedandroider Supongamos que tiene una aplicación de navegador y el usuario selecciona descargar un archivo de 1 GB. El usuario no mantendrá abierta la aplicación del navegador y esperará a que se descargue el archivo. Simplemente comenzará la descarga y saldrá de la aplicación.En este caso, si el hilo generado por la Actividad ya no se ejecutará, debe generar un hilo del Servicio. – CopsOnRoad
@Jack sí, tiene sentido. esto fue hace mucho tiempo lol – committedandroider
- 1. Código de reentrada vs. Seguridad de subprocesos
- 2. sobreasignación de subprocesos de subprocesos de Java
- 3. Prioridad de subprocesos y precisión de subprocesos
- 4. hilos primer plano vs subprocesos de fondo
- 5. Cantidad razonable de subprocesos para el grupo de subprocesos que ejecuta solicitudes de servicio web
- 6. Depuración de una aplicación de subprocesos múltiples
- 7. ¿Completamente cerrada la aplicación de subprocesos múltiples?
- 8. ¿Cómo encontrar una aplicación de subprocesos múltiples?
- 9. Acceso al manejador de subprocesos de UI desde un servicio
- 10. Monitoreo de subprocesos .NET
- 11. Subprocesos C# - Publicar mensajes entre subprocesos
- 12. se notificará cuando se hayan terminado todos los subprocesos de subprocesos de subprocesos
- 13. Biblioteca de subprocesos para el servicio de Windows multiproceso
- 14. Cambiar la prioridad de subprocesos de subprocesos en Windows
- 15. Agregar recursivamente subprocesos a un grupo de subprocesos de Java
- 16. boost :: asio, grupos de subprocesos y supervisión de subprocesos
- 17. Asegurando seguridad de subprocesos
- 18. Detener un servicio de ventanas con subprocesos múltiples
- 19. PARTIAL_WAKE_LOCK y ejecución de subprocesos en un servicio
- 20. Subprocesos nativos en una aplicación .Net
- 21. Grupo de subprocesos frente a muchos subprocesos individuales
- 22. Sincronización de subprocesos en tiempo real con subprocesos normales
- 23. Java Grupo de subprocesos en caché y subprocesos local
- 24. Perfilado de subprocesos de Python
- 25. Oyente de creación de subprocesos
- 26. Sincronización simple de subprocesos
- 27. clasificación de subprocesos múltiples
- 28. Depuración de subprocesos C#
- 29. C + + sobrecarga de subprocesos
- 30. Comprensión de varios subprocesos
Gracias, eso es lo que pensé. En un tema relacionado, al menos en el emulador, después de que comencé a transmitir el reproductor, continuaría reproduciéndose incluso después de presionar el botón Atrás. Estaba asumiendo que se detendría cuando la actividad ya no estuviera en primer plano ... ¿es por el nuevo hilo o se reproducirá sin importar hasta que Android mate la aplicación? – zerayaqob
Sí, el hilo seguirá funcionando hasta que Android lo mate. Si desea que se detenga, implemente algún tipo de indicador "activo" y configúrelo como falso en su método onDestroy(). – synic
¡También tenga en cuenta que los hilos en una 'Actividad' se destruyen cuando la configuración (lectura: orientación) cambia! Esto no es verdad para los hilos en 'Service' s. – MrSnowflake