java - 通知管理器 : cancel(id) DON'T work

标签 java android xml

从服务中,我显示一条通知。我有这个代码:

    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/

相关文章:

JavaFX 从 ChoiceDialog 获取 ComboBox

android - 导航 View 的选择器行为不正确

java - 如何在java android中对两个json值求和?

Javascript 从 REST 循环遍历 XML

java - 有没有更好的方法在 Java 中进行空检查?

java - Java 中的无符号长整型

java - 使用 O(n) 时间复杂度搜索对给定方法返回 true 的二维数组

java - 如何在 RSS android 应用程序中查看来自多个源的提要

android - 当前的XML解析如何工作?

xml - 如何使用 java 和 Eclipse 从 XML 文件创建 XSD?