2010-06-18 16 views
5

En Android, si quiero hacer un trabajo de fondo, ¿cuál es la diferencia entreAndroid - Ejecutar en segundo plano - Servicio vs. clase Java estándar

crear un servicio para hacer el trabajo, y que tiene la actividad iniciar el Servicio VS. Creando una clase Java estándar para hacer el trabajo, y haciendo que la Actividad cree un objeto de la clase e invoque métodos, para hacer el trabajo en un hilo separado.

+0

vea esto http://stackoverflow.com/questions/2633334/application-threads-vs-service-threads –

Respuesta

5

Hacer sus propios hilos es excesivo, hay soluciones para esto, por lo que no tiene que preocuparse por las partes duras de la simultaneidad. Eche un vistazo a AsyncTask o IntentService. Si busca un servicio, tenga en cuenta que su servicio se puede eliminar en cualquier momento.

+0

En la mayoría de los casos, AsyncTask es suficiente para todas las tareas que desea ejecutar en otro hilo. – Janusz

3

Bueno, Android proporciona algunos métodos útiles para hacer que los hilos de trabajo fácilmente. Mire la definición de clase Looper. Le permite enviar eventos a través de un controlador para ser ejecutados uno después de otro en otro hilo o transmitir mensajes entre diferentes hilos.

Un servicio no es nada sofisticado. Crear un servicio es solo una forma de decirle al sistema operativo que necesita hacer algún trabajo, incluso cuando su actividad no sea visible.

2

Dependiendo de la aplicación que está construyendo, podría no ser una opción.

Casi todas las aplicaciones de red tendrán algunas de sus funcionalidades en un Servicio para permitir al usuario cambiar la Actividad activa mientras se está descargando algo.

En un lector de RSS, por ejemplo, puede hacer clic en 'Actualizar todo' y, dependiendo de la conexión de datos actual, podría tomar un poco más de lo que desea. Por lo tanto, si desea que el usuario pueda volver a la pantalla de inicio y hacer cualquier otra cosa mientras los archivos se descargan, tendrá que usar un servicio.

Un servicio le permite ejecutar tareas en segundo plano mientras el usuario no está en su actividad. Esto no significa que se ejecutará todo el tiempo. Compruebe el Service lifecycle.

BTW IntentService es a service.

Cuestiones relacionadas