2010-04-18 10 views
5

¿Es posible detener todos los servicios iniciados cuando el usuario presiona el botón de inicio?Detener todos los servicios iniciados en la aplicación Cerrar/Salir

que utilizo:

startService(new Intent(ClassName.this, ClassName2.class)); 
stopService(new Intent(ClassName.this, ClassName2.class)); 

Esto significa que tendrá que añadir alguna manera el 'stopService()' para 7+ de mis clases de aplicaciones He investigado este tema y creo que hay 'onTerminate' pero todavía no estoy seguro de cómo debería implementarse esto.

¡Cualquier ayuda o pista sería apreciada! Gracias!

Respuesta

16

¿Es posible detener todo comenzó servicios cuando el usuario pulsa el botón de Inicio ?

No directamente. Para empezar, no hay manera de saber que presionaron HOME.

Si solo desea ejecutar el servicio mientras las actividades lo utilizan, considere deshacerse de startService(). En su lugar, use bindService() en los métodos onStart() de las actividades que necesitan el servicio, y llame al unbindService() en sus métodos correspondientes onStop(). Puede usar BIND_AUTO_CREATE para que el servicio se inicie de forma diferida cuando sea necesario, y Android suspenderá automáticamente el servicio después de que se hayan desvinculado todas las conexiones.

+0

Gracias por la respuesta. Todo esto tiene sentido, una cosa es, ¿hay más información sobre "BIND_AUTO_CREATE"? Comprendo el concepto de 'servicio', pero aún no estoy seguro de cómo voy a mantener la música entre mis 7+ actividades, pero la detengo cuando el usuario sale a la 'pantalla de inicio'. Si alguien más tiene el mismo problema, encontré un buen artículo sobre los servicios de Android aquí: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/ –

+0

Su el patrón deseado será difícil de implementar. Es por eso que la mayoría de los reproductores de música no hacen lo que usted hace: específicamente * quieren * la música que se reproduce cuando el usuario presiona INICIO, ofreciendo una Notificación de acceso rápido a la aplicación para detener la música. De hecho, será imposible para usted implementar este patrón específicamente para HOME. Probablemente pueda implementar este patrón porque "ninguna de mis actividades está en primer plano", manteniendo una bandera de si alguna de sus actividades está en primer plano, más un perro guardián que cierra la música si la bandera es falsa por mucho tiempo. – CommonsWare

+0

Sí, esto es solo para un juego, por lo que cuando el juego se suspende/pausa la música no se reproduce. Me di cuenta de que puedo usar OnPause() para que deje de reproducirse si presiono 'INICIO', pero el único problema es que se detiene cuando procedo en el menú del juego. ¿Algún consejo para resolver este problema? –

2

Si desea que los servicios se detengan cuando el usuario abandona su aplicación, le preguntaría si desea utilizar los servicios. Puede que su aplicación sea mucho más complicada de lo necesario.

Además, esta línea es muy cuestionable:

 
startService(new Intent(ClassName.this, ClassName2.class)); 

Usted está haciendo una Intención cuya acción es el nombre de la clase de una clase, y el URI de datos es el nombre de la clase de otra clase ...! Tal vez te refieres a algo así como "nuevo Intento (contexto, MyService.class)"?

+0

Gracias por su contribución, solo intento reproducir música en mi aplicación. También tengo configuraciones de música/sonido para apagarlo, etc. También arreglaré la parte "nuevo propósito". –

+0

Bien. Sin embargo, no necesitas un servicio para tener música. – hackbod

Cuestiones relacionadas