2012-02-05 15 views
5

todo lo que necesito saber es que cuando puedo hacer alguna operación usando un hilo independiente, ¿por qué necesito el servicio? ¿Qué es eso, un servicio puede hacer pero un hilo no puede? Fui a través de muchas de las publicaciones pero no pude encontrar una respuesta satisfactoria.¿Diferencia entre servicio e hilo en Android?

Respuesta

11

El principal beneficio de un Servicio es el acceso a un objeto Contexto que tiene un ciclo de vida independiente. Esto permite la reutilización de código común por muchas actividades y, en el caso de servicios públicos o expuestos, muchas aplicaciones.

Un hilo es un mecanismo para trabajar sin bloquear otros trabajos.

Un servicio no implica un hilo y un hilo no implica un servicio. Son dos cosas muy diferentes. Tiendo a utilizar los Servicios en situaciones en las que necesito un contexto para realizar el trabajo previo pero quiero que el código se aísle de mis actividades para mejorar la reutilización.

+0

Ok ... Si en caso de que pase el contexto en un hilo de trabajo, ¿servirá para eso? – SAMD

+0

no ha explicado el caso o el propósito, así que es difícil para mí decírselo. –

+0

En realidad, estoy buscando algún caso excepcional en el que sea necesario utilizar un servicio. Me hicieron esta pregunta y no pude responder, así que estoy tratando de buscar ayuda usando Stack Overflow. – SAMD

3

Difference between Service and Threaads

Por favor, visite este enlace, espero que encontrará respuesta en este enlace.

En resumen, la principal diferencia entre el servicio y el subproceso es que, el servicio se ejecuta en el subproceso principal (UI) y en las secuencias de subprocesos en su propio subproceso. Si estamos utilizando el servicio para tareas largas, puede causar el bloqueo del hilo de la interfaz de usuario principal.

Visite el enlace dado para obtener más información.

29

Servicio: es un componente de Android que realiza una operación de larga duración en segundo plano, la mayoría sin interfaz de usuario.

Subproceso: es una función de nivel O.S que le permite realizar algunas operaciones en segundo plano.

Aunque conceptualmente ambos parecen similares, hay alguna diferenciación crucial.

1.Service - si se destruye mientras realiza su trabajo, en el medio de Android debido a un escenario de poca memoria. Luego, Android se asegurará de que reiniciará su servicio, si ha devuelto START_STICKY o START_REDELIVER_INTENT desde onStartCommand().

2.Thread - si es destruido por android en el medio debido a la poca memoria, entonces Android no garantizará que se reinicie de nuevo. Eso significa que el usuario perdió su medio trabajo.

3.Service - es un componente de Android, por lo que debe tener en cuenta los niveles de prioridad al destruir una aplicación debido a la poca memoria.

4. Subproceso - no es un componente de Android, por lo que Android no tendrá en cuenta la prioridad de subprocesos al matar una aplicación debido a la poca memoria.

Trataré de explicar este tercer punto.

Digamos, por ejemplo, que necesita conectarse a internet desde su actividad. Puede hacerlo utilizando un servicio (con hilo) o directamente creando un hilo en la actividad. Considera el segundo escenario en el que te estás conectando a internet en un hilo.Luego

i. ¿Qué pasará si el usuario cierra la actividad mientras el hilo se está ejecutando en segundo plano? ¿Ese hilo continuará funcionando en el fondo? La respuesta es que no puedes predecir realmente.

ii. Supongamos que, en la continuación del escenario anterior, incluso después de matar la actividad, el hilo continúa realizando su operación prevista. Luego hay una situación de poca memoria en su teléfono. Entonces esta aplicación será la primera aplicación susceptible de ser eliminada ya que no hay prioridad para esta aplicación.

Así que la línea de fondo es: Si desea hacer algunas funciones de fondo pesado, entonces siempre es mejor tener un servicio con hilo. Si crees que esa funcionalidad de fondo estará viva mientras tu actividad esté activa, entonces busca actividad con hilo o actividad con la tarea asíncrona.

Espero que ayude.

Cuestiones relacionadas