0
我看到有很多類似的問題,但我的警報信息存儲在數據庫中。通過調用deleteReminder,數據庫內的提醒被取消,看起來像這樣setRepeating不會從其他活動取消
public boolean deleteReminder(long rowId) {
return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
這會刪除提醒,但不會報警。我試圖將其更改爲
public boolean deleteReminder(long rowId) {
new ReminderManager(this).cancelReminder();
return mDb.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}
,並在我的ReminderManager活動增添了cancelReminder方法這樣
公共無效setReminder(龍任務id,日曆時,字符串spinInterval){ Log.e(TAG,spinInterval) ;
long l = Long.parseLong(spinInterval);
Intent i = new Intent(mContext, OnAlarmReceiver.class);
i.putExtra(RemindersDbAdapter.KEY_ROWID, (long)taskId);
PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), l, pi);
}
public void cancelReminder(){
Intent i = new Intent(mContext, OnAlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);
mAlarmManager.cancel(pi);
}
但它沒有工作....你能告訴我正確的代碼,使報警停止重複?
不確定這是否是問題,但您正在使用'FLAG_ONE_SHOT'而不是'FLAG_UPDATE_CURRENT'來取消'PendingIntent'。你有沒有試過做'FLAG_UPDATE_CURRENT'? – Karakuri 2013-05-13 21:31:05
就是這樣。謝謝! – JeffK 2013-05-13 22:09:22
很酷。我會把它放在一個答案中,以便爲其他人的利益做標記。 – Karakuri 2013-05-14 16:02:19