删除服务中的持续通知

时间:2012-02-15 21:50:06

标签: java android android-service android-notifications

我有一项服务,可以在启动时创建通知。

然后ondestroy()我希望将其删除。

我只使用.cancel(NOTIFICATION_ID);

当它是正常通知时效果很好但是当我使用正在进行的事件时它不会取消它。

我确实读过一些关于如果android有资源而不停止服务的东西,但是如何克服这个?

我使用此代码启动服务

    final Intent bg_service = new Intent(BackgroundService.class.getName());

    btn_start = (Button)findViewById(R.id.btn_start);
    btn_stop = (Button)findViewById(R.id.btn_stop);

    btn_start.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            startService(bg_service);
        }
    });

    btn_stop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            stopService(bg_service);
        }
    });

我在创建

中使用它
            notificationManager = (NotificationManager) 
            getSystemService(NOTIFICATION_SERVICE);

    Notification notification = new Notification(R.drawable.ic_launcher,
            "A new notification", System.currentTimeMillis());

    notification.flags |= Notification.FLAG_FOREGROUND_SERVICE;

    Intent intent = new Intent(this, mainapp.class);
    PendingIntent activity = PendingIntent.getActivity(this, 0, intent, 0);
    notification.setLatestEventInfo(this, "...",
            "...", activity);
    notificationManager.notify(19314, notification);

这就是破坏

            noficationManager.cancel(19314);

1 个答案:

答案 0 :(得分:8)

如果可以的话,我会考虑做一些不同的'持续'通知。 Service上有一些方法可用于添加和删除“正在进行的”通知。

Service.startForeground(int, Notification)

Service.stopForeground(boolean)

也许您可以先尝试从stopForegroud(boolean)方法调用onDestroy() ...