2010-08-25 18 views
43

Soy bastante nuevo en el desarrollo de Android.Android: ¿Cuándo usar Service vs Singleton?

¿Cuándo es una buena idea crear un servicio de Android en lugar de simplemente usar una clase simple de Singleton?

Tomemos, por ejemplo, la capa de datos que descarga los datos de información de Internet.

El uso de un servicio parece demasiado para algunos casos, pero a veces puede que necesite acceder a un Context, así que no estoy seguro de cómo diseñar la aplicación.

Respuesta

42

Si está bien que su proceso se mate (junto con el singleton) inmediatamente después de que el usuario abandone sus actividades, utilice un singleton. Si necesita que continúe funcionando por algún tiempo después de eso, use un servicio. Si desea seguir ejecutándose después de que el usuario lo abandona, pero puede vivir con él, no porque el usuario esté ahora en otra cosa donde la memoria es más necesaria, entonces use un singleton.

La decisión entre estos dos solo se reduce al ciclo de vida de su aplicación. Para este propósito, eso es todo lo que hace un servicio: pedirle a la plataforma que modifique la administración de su proceso. Si necesita un contexto en un singleton, simplemente use Context.getApplicationContext() para recuperar el contexto global de su proceso.

+5

La última frase del primer párrafo es un poco confusa. ¿Puedes reformularlo un poco? – chakrit

+0

Creo que significa: utilice un singleton cuando prefiera que el proceso continúe ejecutándose después de que el usuario lo abandone, pero solo si la memoria no se necesita más en otro lugar. – mparaz

+1

Por lo tanto, para su ejemplo de las descargas de fuentes de información, supongo * si esas fuentes se almacenaron en el servidor de Internet que las proporciona, de modo que podría ponerse al día cada vez que el usuario regresara a su aplicación, * o * si solo le importaba sobre el procesamiento de nuevos elementos del feed, y no sobre la visualización de un historial ininterrumpido, * entonces * estarías bien con un singleton, pero si necesitabas que tu aplicación siguiera monitoreando el feed mientras el usuario estaba haciendo otra cosa, entonces querrías un servicio. Solo trato de hacer esto un poco más real ... pregunta interesante. – Carl

Cuestiones relacionadas