1
我试图取消一个pendingIntent,所以总是只有一个。根据服务是开始还是停止,我的requestCode是“1”或“2”。该对的PendingIntent启动报警看起来像这样(停止几乎是相同的):用独特的ReqestCode取消PendingIntent
Intent i = new Intent(context, Service.class);
i.setAction("start");
PendingIntent pi = PendingIntent.getService(context, SaveSchedulePrefs.getStartReqCode(context), i, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pi)
新的PendingIntent看起来是这样的:
alarmManager.setExact(AlarmManager.RTC_WAKEUP, mTime, pi);
从我读过的的PendingIntent必须是完全相同以便被取消并且1的requestCode应该满足该需求。这实际上可能是因为预期工作,但是从警报再次触发多天的日志文件显示以下两个启动/停止报警(各7个出现次数):
RTC_WAKEUP #0: Alarm{b216a768 type 0 com.myapp.myRinger}
operation=PendingIntent{b2169318: PendingIntentRecord{b20e5820 com.myapp.myRinger startService}}
RTC_WAKEUP #0: Alarm{b2172ed0 type 0 com.myapp.myRinger}
operation=PendingIntent{b2172ec0: PendingIntentRecord{b20e6160 com.myapp.myRinger startService}}
com.myapp.myRinger +856ms running, 14 wakeups:
+759ms 7 wakes 7 alarms: act=stop cmp={com.myapp.myRinger/com.myapp.myRinger.Service}
+758ms 7 wakes 7 alarms: act=start cmp={com.myapp.myRinger/com.myapp.myRinger.Service}
是我所看到的记录已经被激活的报警的历史记录,或者没有一个报警被取消?
我已将以下setAction方法添加到上面:'i.setAction(“start”);',但我仍然看到相同的日志结果。所以现在我有一个匹配的请求代码和匹配的操作。难道是我看到的日志输出是正常的,报警实际上被取消了吗? – Futureproof 2014-10-01 18:08:33
如果您不确定警报是否关闭,请在警报关闭时向文件中添加一些调试日志记录。那么你就会确定,你不必依靠做出假设。 – 2014-10-01 18:54:29