Visualizzazione stampabile
-
Quote:
Originariamente inviato da
Brucio82
Ma facendo così può girare in background?
Se non ho capito male, non ti serve che giri in background costantemente.
Serve che ogni ora (e qui lo fai grazie ad AlarmManager), venga prelevata la posizione e inviata poi stop.
1) ogni ora. Setti AlarmManager in modo da lanciare ogni ora l'intent. E così il broadcast receiver registrato sull'intent lanciato da AlarmManager ogni ora risponderà, imposterà il lock e passerà la palla al punto 2)
2) prelevo la posizione e la invio. il broadcast receiver del punto 1) creerà un thread a parte (solo perchè altrimenti il tempo di esecuzione supera i 5 sec. e ti appare il Force Close e dubito che tu voglia questo, vero :D?) e questo preleva la posizione, la invierà e rilascierà il wakelock.
Così hai ottimizzato al massimo :P
-
stasera provo!! alla grande!!!
-
Ho messo su il tutto, mi è rimasto un problema, poi dovrei aver completato!!
Praticamente ho una classe Utilities dove ho funzione tipo lettura preferenze da xml (getSharedPreferences() ) ed altre funzioni che richiedono il parametro context........Non riesco a trovare una quadra per evitare che mi vada in eccezione l'app, ho bisogno di una variabile dichiarata nel receiver che gestisce l'alarmmanager, almeno è disponibile in tutto il progetto..come posso fare??
-
Problema risolto creando nel broadcaast receiver una variabile
"public static volatile Context ctx;"
assegnandole poi il valore del context corrente:
"ctx = context;"
ed usandola in tutto il progetto dove non vi è context:
"Receiver.ctx.xxxxxxxxxxxxxxxxxxxxxx"
-
Quote:
Originariamente inviato da
Brucio82
Problema risolto creando nel broadcaast receiver una variabile
"public static volatile Context ctx;"
assegnandole poi il valore del context corrente:
"ctx = context;"
ed usandola in tutto il progetto dove non vi è context:
"Receiver.ctx.xxxxxxxxxxxxxxxxxxxxxx"
Attento a fare sta cosa, perchè finchè l'istanza ctx rimane 'viva', nessun problema.
Ma se lo Scheduler o un task manager ti killa l'app... e tu dai per scontato di averla 'inizializzata' perchè (sparo eh) tu grabbi BOOT_COMPLETED e inizializzi... allora vai in NullPointer exception :P.
Usa una property piuttosto e fai easyload oppure fai in modo di passare sempre il context nel costruttore delle classi custom che ne hanno bisogno.
Consiglio eh ;)