Autore Topic: errore alarmManager.cancel  (Letto 416 volte)

Offline arcadia

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
errore alarmManager.cancel
« il: 05 Novembre 2012, 12:33:25 CET »
0
Buongiorno a tutti,
ho un problema nella cancellazione di un alarmManager perchè non trova la pendingIntent associata.
l' errore è java.lang.NullPointerException sull'istruzione alarmManager.cancel(pendingIntent)

Il problema non si presenta quando sono nell'applicazione (in questo caso posso creare e cancellare tranquillamente), ma dopo aver distrutto e ricreato l'applicazione.

questo è il codice che utilizzo per creare la pendingIntent e settare l'alarm manager:
Codice (Java): [Seleziona]
int uid = (int) System.currentTimeMillis();
Intent myIntent = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
myIntent.putExtra("UID", ""+uid);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), uid, myIntent, 0);
alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, (SystemClock.elapsedRealtime()) + seconds * 1000, pendingIntent);

Questo il codice nel momento in cui tento di cancellare l'allarme impostato:
Codice (Java): [Seleziona]
int uid = Integer.parseInt(myStore.get("UID").toString());
Intent myIntent = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
myIntent.putExtra("UID", ""+uid);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), uid, myIntent, 0);
alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);

La pendingIntent viene creata esattamente allo stesso modo, con lo stesso ID che ricavo nelle impostazioni che salvo in uno store al momento della sua creazione iniziale.l'ID è lo steso, ho verificato.

ripeto, se sono all'interno dell'applicazione non ho problemi, se eseguo il codice dopo aver ricreato l'activity mi da lo stesso errore. Cosa strana però è che se successivamente imposto nuovi timer, a quel punto posso eliminare sia quelli nuovi che quelli vecchi.

Grazie