CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 5 su 5
Discussione:

LocationManager in Activity o in Service?

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    May 2010
    Messaggi
    8

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    LocationManager in Activity o in Service?

    Salve a tutti, vengo al punto.

    Sapreste aiutarmi a capire dove è meglio utilizzare LocationManager.requestLocationUpdates()?

    Se lo si utilizza all'interno di un'Activity, nel momento in cui questa va in stop() e/o destroy(), si perde il riferimento al LocationListener utilizzato dal LocationManager e nasce quindi la necessità di scrivere i dati collezionati da LocationListener.onLocationChanged().
    Ma trattandosi di dati complessi, non primitivi e/o liste, la soddisfazione di tale necessità è complessa!
    Viene da pensare che sia preferibile non dotare il LocationListener di tali dati e del riferimento all'Activity che utilizza il LocationManager. Nel senso, ad ogni invocazione di LocationListener.onLocationChanged(), il dato rilevato viene scritto immediatamente su db e/o file.
    L'Activity, da parte sua procede periodicamente alla lettura di tali dati da db e/o file.

    Mi sembra strano che le PI non permettano di recuperare il listener in uso dal LocationManager!!? Sarebbe comodo.


    Affiancando l'Activity con un Service e spostando il LocationManager in quest'ultimo, non sembra cambiare di molto la situazione descritta sopra.


    Idee!?? Suggerimenti?? Si può procedere così?


    Grazie, Alessandro, Android 2.1

  2.  
  3. #2
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Mettilo in un activity e stai attento con gli onpause e onresume

    Come hai detto tu metterlo nel service è uguale perciò amen. L'unica differenza sostanziale è che il service non è sotto controllo da parte degli utenti che per fermarlo devono far ricorso a apps esterne come task killers.

    Perciò se la tua applicazione ha bisogno di avere la posizione in modo continuativo nel tempo e sopratutto indipendentemente dall'utente usa un service, altrimenti un activity andrà bene ;P

    Twitter @veke87

  4. #3
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    A tal proposito se vuoi ho rilasciato i sorci di una mia app che usa proprio locationlistener manager ecc :

    simple-gps-info - Project Hosting on Google Code

    Twitter @veke87

  5. #4
    Baby Droid


    Registrato dal
    May 2010
    Messaggi
    8

    Ringraziamenti
    0
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Ti ringrazio dei sorgenti.

    E' vero che vorrei raccogliere le coordinate in maniera continuativa ma utilizzare un Service non mi esalta molto. Vorrei mantenere la app il più semplice possibile.
    Anche perchè l'invocazione del requestLocationUpdates è indipendente dallo stato dell'Activity che lo richiede.
    Il LocationListener continua a funzionare.

    Oltretutto, sulle pagine delle PI è sconsigliato valorizzare il parametro minTime a meno di 60.000ms. E per me è sicuramente troppo!

  6. #5
    Administrator L'avatar di Andrea


    Registrato dal
    Nov 2008
    Messaggi
    3,368
    Smartphone
    Nexus S, myTouch Slide 4g

    Ringraziamenti
    143
    Ringraziato 880 volte in 323 Posts
    Predefinito

    Guarda che fare un service non è una cosa così complicata, oltretutto è l'unica soluzione plauisible se ti serve avere continuativamente i dati dal gps/cellewifi.

    Quei valori sono messi li a cazzo :P . In realtà l'utilizzo della batteria maggiore è dovuto all'accensione del modulo gps che, con o senza quei valori, ciuccia batteria a gogo.

    L'unica cosa che cambia è quante volte la tua routine viene chiamata nell'onLocationChanged; ma se la tua routine non fa operazioni onerose per la batteria ( Tipo richieste internet ogni volta, scrittura su rom/sd ) allora il dispendio di batteria non è così rilevante.

    Saluti, Andrea

    Twitter @veke87

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy