2016-06-16 8 views
1

Ich habe eine Android-App, die eine SQLite-Datenbank verwendet. Das Problem ist, dass die Datenbank ziemlich groß geworden ist (41.6 MB) und ich frage mich, ob ich sie richtig in die App lade.Verwenden großer Datenbanken in Android-Apps

Im Moment mache ich in der onCreate() - Methode des Begrüßungsbildschirms meiner App Ich öffne die Datenbank, frage sie ab, speichere die Daten als Objekte und schließe dann die Datenbank. Es dauert eine merkliche Zeit bei einem Kaltstart. Idealerweise möchte ich all dies beim ersten Start tun und die Daten irgendwo auf dem Gerät speichern, um zukünftige Starts zu beschleunigen. Kann ich das irgendwie machen?

+1

Haben Sie klar Ihre alte und ungenutzte Daten? –

Antwort

1

Ich habe das gleiche Problem vorher. Wahrscheinlich ist das der gleiche Fall. Meins eins, weil ich zu viele Male der Backend API pinge und es gibt ein mehr Problem, das Sie in Ihr Objekt einfügen. wahrscheinlich, wenn Sie es einfügen, die Daten, die nur einmal eingefügt werden sollten, fügen Sie es zu oft in die for-Schleife ein, wenn viele Objekte eingefügt werden sollen. Wahrscheinlich können Sie Ihren Code beim Einfügen einfügen. vielen Entwicklern ist das egal, aber eigentlich ist das wirklich nervig für den Benutzer. weil dieser

in meinem Fall:

manager.removeAllStop(); 
    manager.removeAllUpload(); //--> remove the data before insert the new one 

    for (Stop stop : SomeStopsList) { //--> when I want to loop through and want to add it to other object 

     **manager.insertAppTourStopList(appTourStopList);** //--> PROBLEM HERE !!!! THIS COULD BE OUTSIDE FROM THE LIST BECAUSE YOU WANT THIS TO BE ADDED ONCE ONLY 

     ArrayList<Upload> uploadList = new ArrayList<Upload>(); // --> new object 
     for (Upload uploadData : stopList.uploads) { //--> get the list and loop 
      Upload upload = new Upload(); //--> create new object 
      upload.setStopId(stopList.getId()); //--> insert it 
    } 
    } 
Verwandte Themen