Tengo un servicio que roba un sitio web para obtener datos y, si es necesario, le da una notificación al usuario.Las notificaciones desaparecen tan pronto como finaliza el servicio
El problema que tengo es que las notificaciones desaparecen tan pronto como se cierra el servicio (que podría ser instantáneo). El siguiente código es todo el código de notificación que tiene la aplicación. No he ingresado ningún código para cancelar las notificaciones.
public static void CreateNotificationCompat(int notificationID, String link, String title, String text, Context ctx)
{
Intent notificationIntent = new Intent("android.intent.action.VIEW", Uri.parse(link));
PendingIntent contentIntent = PendingIntent.getActivity(ctx.getApplicationContext(), 0, notificationIntent, 0);
NotificationManager nm = (NotificationManager) ctx
.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx);
Resources res = ctx.getResources();
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.notify_icon)
.setWhen(System.currentTimeMillis())
.setContentTitle(title)
.setContentText(text)
.setAutoCancel(false);
Notification n = builder.getNotification();
nm.notify(notificationID, n);
}
Si hace alguna diferencia (bastante seguro de que no lo hace) que estoy usando el contexto de aplicación aquí.
Mis servicios se inician periódicamente, procesa un sitio web, notifica si es necesario y luego se cierra.
Al final de mi servicio en lugar de simplemente llamar a stopSelf() duermo durante aproximadamente 30 segundos y luego llamo a stopSelf(). Entonces la notificación permanece durante 30 segundos y luego desaparece. Nada relevante aparece en Logcat en el momento en que las notificaciones desaparecen.
Solo he podido probar usando ICS hasta ahora.
Esto debería estar bien. En general, las notificaciones solo desaparecerán si su aplicación es asesinada a la fuerza. Esperaría que algo se cuelgue. Sería interesante ver qué código estás usando para "dormir" (¿de verdad le estás diciendo al hilo que duerma?) Y qué hilo se está ejecutando. También sería interesante tratar de eliminar el sueño de los 30s por el bien del experimento y ver si ocurre el mismo comportamiento. – kabuko
¿Dónde está el código que cancela las notificaciones si tiene alguna? Además, para tu información, NO deberías usar cadenas directas como android.intent.action. * Porque esta es una CONSTANTE que está disponible en la clase Intención. @ user1531605 – JoxTraex
Si se solicita que se detenga el servicio "justo antes" de que se publique la notificación, es decir, en la misma cadena de ejecución del código, se borrará la notificación. –