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