Android notifications 获取启动通知的服务?

Android notifications get service that started the notification?

我有一项服务会在一定延迟后执行操作。我想在服务启动时显示通知,单击通知时取消操作。没有UI,都是在后台完成的。该服务由广播接收器启动。

另外,理想情况下,我想每 1 秒更新一次通知以显示剩余时间。

... start operation thread and call thread.sleep(delay)
... create notification builder (nBuilder)
            try { // example assume delay = 30 seconds
                for (int sec = 30; sec >= 0; --sec) {
                    nBuilder.setContentText("Applying settings in " + sec + ", Click to cancel");
                    mNotifyMgr.notify(0x01, nBuilder.build());
                    Thread.sleep(1000);
                }
            }
            catch (InterruptedException e) {
                e.printStackTrace();
            }

如何在点击通知时打破这个循环?此代码在我的服务中。据我所知,响应点击的唯一方法是设置一个挂起的意图,但我如何使用这个意图来打破循环并取消我服务中的操作?

感谢阅读

在您的 Service 中创建一个 BroadcastReceiver。单击通知后,使用 PendingIntent 将触发您的 BroadcastReceiver。当你的BroadcastReceiver中的onReceive()方法是运行时,它可以取消你Service中的操作。

谢谢大卫,但我找到了一个更简单的解决方案

我刚刚对我的线程进行了成员引用,并为设置了取消标志的服务创建了一个挂起的意图,它检索了相同的服务实例,因此我能够中断线程。

不确定我是否很好地解释了这个问题,但我想为什么不分享解决方案。