He leído mucho sobre el servicio de Android. Según tengo entendido, el ciclo de vida es:¿Por qué no hay método Service.onStop?
void onCreate()
void onStart(Intent intent)
...
void onDestroy()
http://www.linuxtopia.org/online_books/android/devguide/guide/topics/fundamentals.html
pero no hay ningún método onStop. Preguntas:
- ¿Por qué no hay un método de paro?
- ¿Qué ocurre cuando se realiza una solicitud stopService en mi Servicio? (desde afuera, tal vez por Android mismo). ¿Puedo detectar este evento?
- Me gustaría hacer cumplir (o al menos verificar) que mi servicio es un singleton dentro de un proceso. ¿Cómo puedo hacer esto (o Android hace cumplir esto detrás de escena)?
Para el contexto, tengo algunos recursos que me gustaría asignar y liberar mientras que el servicio se está ejecutando (en un "iniciado"), y otro conjunto de recursos que le gustaría asignar y liberar mientras que el servicio es un estado "creado".
Tenga en cuenta que si llama a bindService con BIND_AUTO_CREATE, no se llamará a onDestroy() hasta que suelte – aaronvargas
observé que 'onDestroy()' no se llama cuando el dispositivo se apaga. ¿Hay alguna otra devolución de llamada que pueda ser anulada en ese caso? – fiddler
@fiddler: no hay garantía de que se llame a 'onDestroy()', en algunos casos (Force Stop, la aplicación se bloquea, la necesidad de emergencia de la RAM del sistema), no solo en el apagado. No hay devolución de llamada cuando Android acaba su proceso. * Específicamente * con respecto al apagado, podría intentar registrar un 'BroadcastReceiver' para [' ACTION_SHUTDOWN'] (https://developer.android.com/reference/android/content/Intent.html#ACTION_SHUTDOWN), pero lo haría no contar con tiempo para hacer algo significativo. – CommonsWare