2012-09-13 20 views
6

Creé una aplicación que muestra Notificación cuando se ejecuta el método Service.onStartCommand() y oculta la notificación cuando se llama a Service.onDestroy(). Funciona bien para llamadas normales a startService() y stopService().Eliminar la notificación cuando el servicio fue destruido por el sistema operativo Android

Código de servicio:

@Override 
public IBinder onBind(Intent intent) 
{ 
    return null; 
} 
@Override 
public void onCreate() 
{ 
    super.onCreate(); 
    nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) 
{ 
    //Some code here 
    showNotification(); 
    return START_NOT_STICKY; 
} 

@Override 
public void onDestroy() 
{ 
    super.onDestroy(); 
    nm.cancel(R.string.service_started); 
} 

Problema: Cuando mi servicio es destruido por el sistema operativo Android() (En caso de que no se llama onDestroy()), entonces la notificación no se elimina. Entonces, ¿cómo eliminar la notificación cuando el servicio es destruido por el propio sistema operativo Android?

Respuesta

0

Lo más probable es que no está deteniendo su servicio

+0

Estoy deteniendo el servicio y esto funciona bien en ese caso. Pero cuando mi servicio es destruido por el sistema operativo Android() (puede estar en memoria baja u otra cosa) cómo eliminar la notificación – user1041858

+0

@ user1041858 ¿Por qué crees que onDestroy no se llamará en este caso? –

+0

Tengo este problema cuando el sistema Android destruye el servicio automáticamente. – user1041858

0

reemplazando el método onStop para el trabajo del ciclo de vida correctamente.

1

Debe usar esto donde quiera que quiera detener el servicio, que cerrará su notificación y finalizará el servicio.

stopService(new Intent(MainActivity.this,MyService.class)); 
Cuestiones relacionadas