Android通知是否获得启动通知的服务?

时间:2015-01-25 23:55:14

标签: android android-intent service notifications android-service

我有一项服务,在一定延迟后执行操作。我想在服务启动时显示通知,并且在单击通知时取消操作。没有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();
            }

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

感谢您阅读

2 个答案:

答案 0 :(得分:0)

BroadcastReceiver中创建Service。点击通知后,使用会触发PendingIntent的{​​{1}}。运行BroadcastReceiver中的onReceive()方法时,它可以取消BroadcastReceiver中的操作。

答案 1 :(得分:0)

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

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

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