【发布时间】:2014-09-24 04:09:21
【问题描述】:
我正在尝试取消一个pendingIntent,所以总是只有一个。我的 requestCode 是“1”或“2”,具体取决于服务是启动还是停止。启动警报的 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 必须完全相同才能被取消,并且 requestCode 为 1 应该满足该需求。这实际上可能按预期工作,但警报重新触发多天的日志文件显示启动/停止警报的以下内容(每次发生 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}
我在日志中看到的是否是已经激活的警报的历史记录,或者它们都没有被取消?
【问题讨论】:
标签: android alarmmanager android-pendingintent