在Android OS销毁服务时删除通知

时间:2012-09-13 06:33:25

标签: android service android-ondestroy

我创建了一个应用程序,在Service.onStartCommand()方法执行时显示通知,并在调用Service.onDestroy()时隐藏通知。它适用于正常调用startService()和stopService()。

服务代码:

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

问题:当我的服务被Android OS()销毁时(如果未调用onDestroy()),则通知未被删除。那么当Android OS本身销毁Service时如何删除通知?

5 个答案:

答案 0 :(得分:0)

您应该在想要停止服务的地方使用它,这将关闭您的通知和终止服务。

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

答案 1 :(得分:0)

始终在super.onDestroy();之前而不是之后调用您的代码

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

答案 2 :(得分:0)

您是否尝试过notificationManager.cancelAll()

如果您定位的是API 24+ stopForeground(Service.STOP_FOREGROUND_REMOVE)stopForeground(true)

另外,您可能应该研究onTrimMemory()onLowMemory(),它们在操作系统销毁服务时会被调用。

答案 3 :(得分:0)

只需使用

stopForeground(true)

工作完成后,它将破坏前台通知。

答案 4 :(得分:-1)

很可能你没有停止服务