从服务中,我显示一条通知。我有这个代码:
public final static int NOTIFICATION = 1;
public final static int NOTIFICATION2 = 2;
case NOTIFICATION2:
builder.setSmallIcon(R.drawable.ic_action_about);
builder.setContentTitle(context.getString(R.string.app_name));
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<10;i++) {
builder.setContentInfo(i+"/"+10);
notificationManager.notify(NOTIFICATION2, builder.build());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
notificationManager.cancel(NOTIFICATION2);
break;
代码工作正常,但是当线程完成时,通知仍然存在。为什么?我想取消它,但 cancel()
不起作用。
最佳答案
由于您启动了显示通知的异步线程,因此会立即调用 notificationManager.cancel(NOTIFICATION2);
。这意味着当您取消通知时,通知尚未显示。
尝试将 notificationManager.cancel(NOTIFICATION2);
移至 run() 方法中。
关于java - 通知管理器 : cancel(id) DON'T work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565994/