Autore Topic: bloccare alarm manager  (Letto 604 volte)

Offline cnicola90

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
bloccare alarm manager
« il: 11 Aprile 2013, 18:57:04 CEST »
0
Salve ragazzi, ho creato una semplice applicazione che lancia un AlarmManager che richiama un service. Quando chiudo l'app il service viene richiamato periodicamente e fin qui ci siamo. Come faccio a fare in modo che premendo un pulsante possa bloccare l'AlarmManager in modo da non far richiamare più il service?
Questo è il codice con cui creo l'AlarmManager:
Codice (Java): [Seleziona]
Intent intentReceive=new Intent(MainActivity.this, WallpaperService.class);
pendingIntentReceive=PendingIntent.getService(MainActivity.this, 0, intentReceive, 0);      
alarmManagerReceive=(AlarmManager)getSystemService(ALARM_SERVICE);
alarmManagerReceive.setRepeating(AlarmManager.RTC_WAKEUP,10, 20*1000, pendingIntentReceive);
Questo è il codice che avevo usato per bloccarlo:
Codice (Java): [Seleziona]
Intent intent=new Intent(MainActivity.this, WallpaperService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();

In questo modo però il service viene richiamato continuamente.. ???

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:bloccare alarm manager
« Risposta #1 il: 11 Aprile 2013, 20:57:27 CEST »
0
Sinceramente a me gli AlarmManager che si ripetono all'infinito non piacciono. Troppe cose possono andare storte e indispettire gli utenti quando accade.

Io farei in modo da impostare l'AlarmManager in modo che scada una sola volta, poi nella gestione di quella singola volta se una certa SharedPreference è TRUE lo rilanci (sempre per una sola volta). In questo modo, quando vuoi fermarlo, fai in modo da impostare nelle sharedpreferences la variabile a FALSE e alla prossima esecuzione non sarà rilanciato.

Magari è un po' complicato, ma mi da' più sicurezza.  :D

Qualcuno conosce altri metodi?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline cnicola90

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:bloccare alarm manager
« Risposta #2 il: 12 Aprile 2013, 00:36:36 CEST »
0
Avevo pensato pure io a controllare una preferenza all'avviò del service, ma quando voglio bloccarlo l'AlarmManager non voglio consumare risorse, cioè voglio che venga bloccato sia il service (e questo lo fa già Android ) che l'AlarnManager