uso una tiempo thread termine tarea studio servicios segundo que plano peticiones hilos esperar ejecutar como cierto cada asynctask asincronos asincronas android service binding

una - thread android studio



¿Por qué usar el Servicio si se ejecuta en el mismo hilo en Android? (2)

Estaba pasando por Bound Service en el sitio web de Android Developer. Pensé que entendía el servicio lo suficiente, pero acabo de encontrar otra forma de conectar el servicio a través del uso de la clase Messenger , especialmente para el servicio local. Allí me confundí. Tal vez entendí mal el concepto.

Aquí está mi comprensión del Service de Android. Usted crea un servicio cuando

  1. Quieres hacer trabajos separados en el fondo .
  2. Quieres que sea un proceso separado.
  3. Desea que se ejecute en un ciclo de vida que sea independiente del componente que lo inició.

La confusión es el primer elemento de la lista, la definición del fondo. ¿No es el fondo un hilo o proceso? Nunca pensé que se puede ejecutar en el hilo principal.

Aquí está la precaución de servicio en las páginas de desarrollo sobre.

Precaución : un servicio se ejecuta en el hilo principal de su proceso de alojamiento; el servicio no crea su propio hilo y no se ejecuta en un proceso separado (a menos que especifique lo contrario). Esto significa que, si su servicio va a hacer cualquier trabajo de CPU intensivo o operaciones de bloqueo (como la reproducción de MP3 o la red), debe crear un nuevo hilo dentro del servicio para hacer ese trabajo. Al utilizar un subproceso separado, reducirá el riesgo de errores de aplicación que no responde (ANR) y el subproceso principal de la aplicación puede permanecer dedicado a la interacción del usuario con sus actividades.

Preguntas

  1. ¿Por qué uno elige usar el servicio si la función de servicio se ejecuta de todos modos en el hilo principal?
  2. ¿Tenemos que escribir un servicio solo para bloquear ANR incluso si el trabajo que lleva mucho tiempo se realiza en el hilo principal? Supongamos que el servicio es solo para mi aplicación.
  3. ¿Hay casos prácticos o razones que usen un servicio como privado y en ejecución en el mismo hilo?

El hilo principal de la aplicación no es siempre el hilo de la interfaz de usuario. Por ejemplo, cuando se detiene la onStop() se invoca a onStop() , por lo tanto, el hilo de la interfaz de usuario se retira de esa Activity y se mueve a otra actividad dentro de la misma aplicación o una aplicación diferente. Sin embargo, no significa que la aplicación ya no esté activa, puede continuar trabajando en segundo plano hasta que la cierre el sistema operativo o el usuario. Entonces, ¿quién lo mantiene funcionando en segundo plano? Es el hilo principal y no el hilo de la interfaz de usuario.

Que son los servicios

En Android, un Servicio es un componente de la aplicación que puede realizar operaciones de larga ejecución en segundo plano en el subproceso de la interfaz de usuario. Por el fondo, significa que no tiene una interfaz de usuario. Un Servicio se ejecuta en el subproceso principal del proceso del Componente que llama de forma predeterminada (y por lo tanto puede degradar la capacidad de respuesta y causar ANR), por lo tanto, debe crear un nuevo Subproceso para realizar operaciones de larga ejecución. También se puede hacer que un Servicio se ejecute en un proceso completamente diferente.

A diferencia de los componentes de Actividad, los Servicios no tienen ninguna interfaz gráfica. Los receptores de difusión también son para recibir mensajes de difusión (difusión, multidifusión, unidifusión) y realizar tareas cortas, mientras que los servicios están diseñados para realizar un procesamiento prolongado como transmisión de música, transacciones de red, E / S de archivos, interacción con bases de datos, etc. Cuando se inicia un servicio por un componente de aplicación como una Actividad, se ejecuta en segundo plano y se sigue ejecutando incluso si el usuario cambia a otra aplicación o el componente de inicio se destruye

¿Por qué usar el servicio?

Los servicios reciben mayor prioridad que otros procesos en segundo plano y, por lo tanto, es menos probable que Android los finalice. Aunque puede configurarse para reiniciarse una vez que haya suficientes recursos disponibles nuevamente. Debe pasar por los diferentes procesos y su nivel de prioridad / importante en la documentación sobre procesos y subprocesos. Asignarles la misma prioridad que las actividades de primer plano es definitivamente posible, en cuyo caso deberá tener una notificación visible activa (generalmente utilizada para los Servicios que tocan música).

Utilice IntentService si no quiere jugar con la gestión de subprocesos por su cuenta. De lo contrario, utilice AsyncTasks .

Lea este excelente artículo para comprender más en detalle y también lea esta respuesta .


En resumen, los Servicios se ejecutan en el fondo del subproceso de la interfaz de usuario. Puede realizar tareas como la autenticación cliente-servidor o escribir en una base de datos donde las tareas se realicen en segundo plano sin interfaz gráfica.

Pero si está realizando tareas de procesamiento realmente largas que podrían congelar la interfaz, utilice un servicio en un subproceso separado.

Por ejemplo, de un Servicio en un hilo separado es IntentService