Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android通知获取启动通知的服务?_Android_Android Intent_Service_Notifications_Android Service - Fatal编程技术网

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

Android通知获取启动通知的服务?,android,android-intent,service,notifications,android-service,Android,Android Intent,Service,Notifications,Android Service,我有一个服务,在一定的延迟后执行操作。我想在服务启动时显示一个通知,当单击该通知时,它将取消操作。没有用户界面,全部在后台完成。该服务在引导时由广播接收器启动 理想情况下,我希望每1秒更新一次通知,以显示剩余时间 ... start operation thread and call thread.sleep(delay) ... create notification builder (nBuilder) try { // example assume delay =

我有一个服务,在一定的延迟后执行操作。我想在服务启动时显示一个通知,当单击该通知时,它将取消操作。没有用户界面,全部在后台完成。该服务在引导时由广播接收器启动

理想情况下,我希望每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();
            }
单击通知时,如何打破此循环?这是我的服务代码。据我所知,响应单击的唯一方法是设置挂起的意图,但我如何使用此意图来中断循环并取消服务中的操作


感谢阅读

在您的
服务
中创建一个
广播接收器
。单击通知时,使用将触发您的
广播接收器的
pendingent
。当运行
BroadcastReceiver
中的
onReceive()
方法时,它可以取消
服务中的操作

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

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

我不确定我在解释这个问题时做得很好,但我想为什么不分享解决方案呢