Ho un'app con più activity, e in una di queste faccio partire un alarm manager..nel metodo onDestroy() dell'activity fermo l'alarm, ma se l'app viene chiusa con un task esterno come faccio a fermarlo?
Visualizzazione stampabile
Ho un'app con più activity, e in una di queste faccio partire un alarm manager..nel metodo onDestroy() dell'activity fermo l'alarm, ma se l'app viene chiusa con un task esterno come faccio a fermarlo?
Avevo pensato di far partire l'alarm manager da un activity, senza ripetizione (cioè richiama il service una sola volta) poi faccio partire un nuovo alarm manager dal service che richiama il service stesso..ogni volta che parte il service posso controllare un valore di tipo booleano, che se è false blocca l'alarm manager..come faccio a settare tale valore a false quando viene premuto il tasto home?
Se assegni il valore null all'alarm manager?
Inviato dal mio Galaxy Nexus con Tapatalk 2
Crea una classe che estenda Application per condividere fra le activity le informazioni circa lo stato dell'alarm manager (Application | Android Developers).
Inoltre guarda il lifecycle delle activity, quando viene premuto il tasto home di sicuro viene quantomeno chiamato onPause() (Activity | Android Developers).
Credo, salvo modifiche recenti di cui non sono al corrente, venga richiamato sia onPause che onStop. io ti consiglierei di scegliere quale dei due metodi è più comodo per te.
Credo invece sia impossibile (o dovrebbe esserlo salvo hack strani) intercettare il tasto home la cui gestione dovrebbe essere lasciata al sistema.
In soldoni, a meno ripeto di variazioni che non conosco, la strada "standard" dovrebbe essere onPause/onStop.
Peraltro fai presto a prendere la tua activity, fare l'override delle due funzioni e mettere un bel Toast giusto per vedere se passa.
Per il resto, non intendo di gestire o intercettare stati nella Application.
Secondo me nella application ci dovrebbe essere un metodo che mantiene i riferimenti del tuo alarm manager, e che sia in grado di fermarlo se serve. Poi quel metodo andrà richiamato dai vari onPause/onStop.