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
中的操作。
谢谢大卫,但我找到了一个更简单的解决方案
我刚刚对我的线程进行了成员引用,并为设置了取消标志的服务创建了一个挂起的意图,它检索了相同的服务实例,因此我能够中断线程。
不确定我是否很好地解释了这个问题,但我想为什么不分享解决方案。
我有一项服务会在一定延迟后执行操作。我想在服务启动时显示通知,单击通知时取消操作。没有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
中的操作。
谢谢大卫,但我找到了一个更简单的解决方案
我刚刚对我的线程进行了成员引用,并为设置了取消标志的服务创建了一个挂起的意图,它检索了相同的服务实例,因此我能够中断线程。
不确定我是否很好地解释了这个问题,但我想为什么不分享解决方案。