locked
Lavorare con molti dati XML, come farlo senza appesantire il Device? RRS feed

  • Domanda

  • Ciao a tutti!!
    Nella mia App, faccio un uso intensivo di dati XML, e testando l'App sull'emulatore da 256 MB di RAM, mi viene generata una OutOfMemoryException.
    Premesso che non mi preme, ora come ora, che la mia App funzioni sui Device di fascia bassa, vorrei sapere come alleggerire la mole di lavoro, in quanto anche su un dispositivo di fascia alta ho parecchi problemi.

    Premettendo che tutti i dati sono in locale (non posso, per motivi di scelta costruttiva dell'App utilizzare servizi Web, né li possiedo), vorrei sapere come, appunto, cercare di stressare il meno possibile il telefono.

    Inoltre, se l'App viene mandata in Tombstoning mentre carica i dati, naturalmente, crasha. È possibile avvisare l'utente, magari con una MessageBox, chiedendogli se vuole continuare nella sua azione?

    Spero di essermi spiegato al meglio :)

    Matteo

    giovedì 20 settembre 2012 09:42

Risposte

  • Inoltre, se l'App viene mandata in Tombstoning mentre carica i dati, naturalmente, crasha. È possibile avvisare l'utente, magari con una MessageBox, chiedendogli se vuole continuare nella sua azione?

    No, non puoi intercettare il tombstoning di un'app. Se l'utente pigia il tasto start, l'app va in background e basta.

    Hai pero' alcuni secondi di cpu quando l'app va' in background per terminare calcolo in corso, come nel tuo caso.
    Devi usare i metodi Application_Deactivated e Application_Closing che trovi dentro App.xaml.cs.

    Marco

    • Proposto come risposta Marco Mura domenica 30 settembre 2012 23:45
    • Contrassegnato come risposta WinTeo_92 lunedì 1 ottobre 2012 05:22
    giovedì 20 settembre 2012 14:41

Tutte le risposte

  • per l'uscita 

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
                //Message box
            }

    Per il resto...ma quanti dati hai?! :D Come li hai salvati nel file?


    Ronca

    giovedì 20 settembre 2012 10:45
  • Quello è solo se preme indietro.. :(

    Se dovesse tappare su una notifica?

    Comunque è un XML, quindi:

    <row>
    <nome_campo>VALORE</nome_campo>
    <nome_campo_2>VALORE 2</nome_campo_2>
    ...
    ...
    </row>

    Matteo

    giovedì 20 settembre 2012 10:50
  • protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
            {
                
                //MEssagebox
            }
    osì dovrebbe andare per tutto

    Ronca

    giovedì 20 settembre 2012 11:24
  • Appena vado al pc provo! :)
    giovedì 20 settembre 2012 13:25
  • Inoltre, se l'App viene mandata in Tombstoning mentre carica i dati, naturalmente, crasha. È possibile avvisare l'utente, magari con una MessageBox, chiedendogli se vuole continuare nella sua azione?

    No, non puoi intercettare il tombstoning di un'app. Se l'utente pigia il tasto start, l'app va in background e basta.

    Hai pero' alcuni secondi di cpu quando l'app va' in background per terminare calcolo in corso, come nel tuo caso.
    Devi usare i metodi Application_Deactivated e Application_Closing che trovi dentro App.xaml.cs.

    Marco

    • Proposto come risposta Marco Mura domenica 30 settembre 2012 23:45
    • Contrassegnato come risposta WinTeo_92 lunedì 1 ottobre 2012 05:22
    giovedì 20 settembre 2012 14:41
  • Dovrei quindi usare degli oggetti statici? :)

    giovedì 20 settembre 2012 16:52
  • ha già risposto Marco :)
    Grazie lo stesso!
    giovedì 20 settembre 2012 16:52