Autore Topic: Salvare lo stato di un'applicazione  (Letto 554 volte)

Offline AndrewDev

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.9.5
Salvare lo stato di un'applicazione
« il: 11 Dicembre 2014, 15:50:35 CET »
0
Ciao a tutti, ho un problema con la mia applicazione che non sto riuscendo a capire e a risolvere. Nella mia applicazione c'è una mappa google con delle tiles che scarico da un url, marker e poligoni e ogni qualvolta lo schermo va in standby o l'utente lo blocca, l'activity viene riavviata e mi ricarica il tutto, perdendo tutti i dati e oggetti caricati, come faccio ad evitare il ricaricamento di una activity e a salvare lo stato e i dati dell'applicazione così come erano prima? Lo stesso mi accade con altre activity che fanno delle chiamate AsyncTask a servizi su di un server e ogni qualvolta lo schermo va in standby o l'utente lo blocca, mi riparte la chiamata AsyncTask e mi riscarica nuovamente i dati.
Ho provato a vedere un po' i metodi onSaveInstanceState e altri, ma i metodi a sua disposizione possono salvare solo tipi primitivi e non oggetti complessi quali tiles, marker, poligoni e risultati di chiamate AsyncTask.
Potete darmi qualche dritta, esempio o guida dove io possa vedere di risolvere questo problema?
Grazie a chi mi aiuterà.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Salvare lo stato di un'applicazione
« Risposta #1 il: 11 Dicembre 2014, 16:38:10 CET »
0
per le tiles devi farle cachare tu (il sistema di gmaps per le tiles esterne non cacha niente), usa un LRU cache magari
per la mappa (marker,poligoni ecc) hai due modi:
1- usi il retainInstance del mapFragment e si arrangia lui a salvare il possible
2- usi un saveinstancestate facendoti dei dto custom oppure ti salvi le coordinate e qualche altro oggetto (i marker hanno lat/lon e in caso title ecc, i poligoni un array di punti). Se non sbaglio l'oggetto LatLon è parcelable, quindi lo puoi salvare...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline AndrewDev

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Mac OS X 10.9.5
Re:Salvare lo stato di un'applicazione
« Risposta #2 il: 12 Dicembre 2014, 13:56:44 CET »
0
Grazie per la risposta, in parte ho già risolto alcuni problemi, ma per quanto riguarda invece l'utilizzo dell AsyncTask che mi restituisce dei dati che io uso per l'applicazione, come faccio a salvarli e a evitare che ad ogni "cambio di stato" mi perda questi dati e mi richiami nuovamente l'AsyncTask?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Salvare lo stato di un'applicazione
« Risposta #3 il: 12 Dicembre 2014, 15:02:00 CET »
0
database, shared preferences o singleton con oggetto application... dipende da quali e quanti dati hai da salvare...
fai un service invece che un asynctask magari...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia