Избегайте повторения будильника в Android

Привет, я новичок в разработке Android. Я разрабатываю приложение, связанное с будильником, с помощью notification, в то время как я устанавливаю будильник в определенное время, все работает отлично, и будильник уведомляется правильно, но будильник notification повторяется несколько раз, пока я не повторяю его, как я могу избежать Эта проблема.

это мой код:

Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("ti", name);
intent.putExtra("id", id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);      
final Calendar cal = Calendar.getInstance();        
switch(Cun.valueOf(repeat)) {
case No:        
 alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
 break;
}

person Karthi    schedule 08.04.2013    source источник
comment
@Aʌɐpɥɐuı Пожалуйста, не используйте форматирование кода, чтобы просто выделить ключевые слова. Его следует использовать только для реального встроенного кода.   -  person Andrew Barber    schedule 08.04.2013


Ответы (1)


После того, как будильник сработает в первый раз, отмените его, используя:

Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("ti", name);
intent.putExtra("id", id);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
alarmManager.cancel ( pendingIntent );
person Leeeeeeelo    schedule 08.04.2013
comment
Где вы разместили блок кода, который я предложил? Его следует поместить в класс AlarmReceiver. - person Leeeeeeelo; 09.04.2013
comment
нет, я размещаю этот код в своем основном действии. Из этого сигнала тревоги может быть сгенерирован sql lite - person Karthi; 09.04.2013
comment
Если вы хотите отменить тревогу после ее первого уведомления, вы должны поместить мой блок кода в AlarmReceiver, так как если вызывается AlarmReceiver, вы уверены, что тревога уведомлена один раз. , а затем вы отменяете его там вместе со своим кодом/логикой. - person Leeeeeeelo; 09.04.2013