2011-06-17 12 views
15

He creado la alarma como se muestra a continuaciónDetener el setrepeat de Android AlarmManager

Intent intent = new Intent(this, Areceiver.class); 
PendingIntent sender = PendingIntent.getBroadcast(this, 1234567, intent, 0); 

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, timenow, 3000, sender); 

creé un botón para detener la alarma. En el método onclick, he escrito el siguiente código

Intent intentstop = new Intent(this, Areceiver.class); 
PendingIntent senderstop = PendingIntent.getBroadcast(this, 
      0, intentstop, 0); 
AlarmManager alarmManagerstop = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManagerstop.cancel(senderstop); 

Pero el trabajo no se detiene. ¿Cuál podría ser el problema?

Respuesta

32

Le diste a tu intención pendiente un request_code = 1234567 cuando enciendes la alarma. Pero estás usando 0 cuando tratas de detenerlo. Úselo cuando intente detenerse y debería funcionar

Intent intentstop = new Intent(this, Areceiver.class); 
PendingIntent senderstop = PendingIntent.getBroadcast(this, 
      1234567, intentstop, 0); 
AlarmManager alarmManagerstop = (AlarmManager) getSystemService(ALARM_SERVICE); 

alarmManagerstop.cancel(senderstop); 
+1

Esto también me ayudó. Aunque mi intenet inició un servicio, en lugar de utilizar PendingIntent.getBroadcast, utilicé PendingIntent.getService. Gracias! – Asim

+0

¿Hay algún método que garantice que se llame al servicio? Lamentablemente 'onDestroy' no se llama en mi caso – Niklas

Cuestiones relacionadas