通知一旦服务结束就消失

我有一个服务,刮伤数据的网站,然后在必要时给用户一个通知

我遇到的问题是,服务closures(可能是即刻),通知消失。 下面的代码是应用程序所有的通知代码。 我没有放置任何代码来取消通知。

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); } 

如果它有什么区别(很确定它没有)我在这里使用应用程序上下文。

我的服务定期启动,处理一个网站,如果需要通知,然后closures。

在我的服务结束,而不是只调用stopSelf()我睡了30秒左右,然后调用stopSelf()。 然后通知停留30秒,然后消失。 通知消失时,logcat中不会显示任何相关信息。

目前为止,我只能使用ICS进行testing。

Solutions Collecting From Web of "通知一旦服务结束就消失"

你已经发布的代码作品。 我从jb上的一个活动和一个服务对它进行了testing,当这个组件停止时,这个通知就会停留。 我甚至证实我可以杀死这个进程,通知仍然存在。 尝试剥离应用程序,看看问题是否依然存在。 具体检查一下,看看是不是通过错误的通知来取消。

你似乎忘了先检查开发者手册。 看到这里http://developer.android.com/guide/topics/ui/notifiers/notifications.html并寻找FLAG_ONGOING_EVENT和FLAG_NO_CLEAR标志。

目前为止,我只能使用ICS进行testing。

这就是为什么模拟器非常有用。 尝试一下。 它是SDK的一部分。

请在同一设备上尝试旧的方式,并告诉我们是否以相同的方式运行:

 private static void CreateNotificationCompat(int notificationID, String link, String title, String text, Context ctx) { String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) ctx.getSystemService(ns); Notification notification = new Notification(R.drawable.notify_icon, title, System.currentTimeMillis()); notification.flags = Notification.FLAG_AUTO_CANCEL; PendingIntent contentIntent; Bundle bundle = new Bundle(); Intent notificationIntent = new Intent("android.intent.action.VIEW", Uri.parse(link)); contentIntent = PendingIntent.getActivity(ctx, notificationID, notificationIntent, 0); notification.setLatestEventInfo(ctx, title, text, contentIntent); mNotificationManager.notify(notificationID, notification); }