Android App stürzt bei erstellen von SQlite Datenbank in virtueller Maschine ab auf realen Geräten nicht

softwaretk

softwaretk

Neues Mitglied
0
Hallo zusammen
unten mein Programm Code der beim ersten Start der App abgerufen wird. Es sind noch weitere 193 Zeilen die so aussehen ->
database.execSQL("INSERT INTO " + databasetableName + " VALUES('1', 'Land', 'Haupstadt')");
nur anderer Inhalt. Jetzt ist meine Frage wie kann das sein das ich die App auf einem realen Tablet installiere und ich keinen Absturz habe, beim erstellen der
Datenbank. Aber mit einem virtuellen Tablett in Android Studio einen Absturz erzeuge wichtig nur einmalig beim erstellen danach gibt es keine Probleme mehr.
Liegt das an der begrenzten Rechenleistung von der virtuellen Maschine? Bzw. wird die SQLite Datenbank beim zurücksetzen der App gelöscht?

/*Programmcode*/
final String databaseName = "erdkunde.db";
final String databasetableName = "hauptstaedte";

String Land, Hauptstadt;

public void createDatabase(){
SQLiteDatabase database = openOrCreateDatabase(databaseName, 0, null);
database.execSQL("CREATE TABLE " + databasetableName + " (id INTEGER, land TEXT, hauptstadt TEXT)");
database.execSQL("INSERT INTO " + databasetableName + " VALUES('1', 'Land', 'Haupstadt')");
//hier sind normal noch 193 weitere Zeilen
database.close();
}
/*Programmcode Ende*/
 
@softwaretk

Was sagt denn dein ErrorLog ?

//hier sind normal noch 193 weitere Zeilen
Verwendest du keine Ableitung von SQLiteOpenHelper um asynchron zu arbeiten ?
Keinen Thread erstellt ? Nur einfach "rausgehauen" ?
Das wäre aber tödlich :)
 
Zuletzt bearbeitet:
Hallo ich denke die SQLiteDatabase.CursorFactory einfach mit "0" anzugeben ist nicht richtig.
 
Zuletzt bearbeitet:
@swa00
Ich verwende keine Ableitung von SQLiteOpenHelper muss ich mich mal informieren was das ist. Ich habe auch keinen Thread erstellt.
Ich bekomme keine Fehlermeldung ist das Problem ich kann nur das hier weitergeben was ich bei Run ausgegeben bekomme:

I/Choreographer: Skipped 133 frames! The application may be doing too much work on its main thread.
I/OpenGLRenderer: Davey! duration=2341ms; Flags=1, IntendedVsync=322579365202, Vsync=324796031780, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=324805697500, AnimationStart=324805748300, PerformTraversalsStart=324809313200, DrawStart=324845921400, SyncQueued=324852463800, SyncStart=324854000700, IssueDrawCommandsStart=324854121100, SwapBuffers=324918510100, FrameCompleted=324921931900, DequeueBufferDuration=311100, QueueBufferDuration=1586200, GpuCompleted=0,
I/OpenGLRenderer: Davey! duration=2352ms; Flags=1, IntendedVsync=322579365202, Vsync=324796031780, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=324805697500, AnimationStart=324805748300, PerformTraversalsStart=324809313200, DrawStart=324923895500, SyncQueued=324923949800, SyncStart=324943063400, IssueDrawCommandsStart=324944305100, SwapBuffers=324949181200, FrameCompleted=324951013400, DequeueBufferDuration=134700, QueueBufferDuration=525900, GpuCompleted=0,
 
Zuletzt bearbeitet:
In deiner Liste fehlt zwar der eigentliche Punkt des Absturzes ( fängt mit "caused" an ) aber meine Vermutung ging schon
in die richtige Richtung :)

I/Choreographer: Skipped 133 frames! The application may be doing too much work on its main thread.

Eine Android App basiert grundsätzlich auf Multithreads.
Das ist was Anderes, als z.b. Coden in C/C++. (Obwohl es auch da angebracht ist)

Du kannst also nicht beliebig viele Commands seriell auf das System loslassen.
Erst recht nicht im Main Thread resp. UI Thread und vor Allem nicht, wenn auf das Filesystem geschrieben wird. (SQLITE)

Loops sind ein NOGO (das Gleiche, was du ja mit deinen ~ 190 Aufrufen machst)
Dazu benutzt man eigene Threads , Callbacks und Listener.
Und das in eigenen Objekt-Klassen, nicht in der Activity. (OOP)

Derzeit ballerst Du dein System zu und lässt der UI im Prinzip keinerlei Luft zum atmen.
Im Prinzip hast du Glück , dass die App wohl auf einem leistungsstarken Device läuft - das war vermutlich eher Zufall :)
 
Zuletzt bearbeitet:
@swa00
Danke mal wieder für die schnelle und ausführliche Antwort :). Hat mir sehr weitergeholfen. Ich habe in C/C++ Logik gedacht.😂
 

Ähnliche Themen

R
Antworten
6
Aufrufe
970
swa00
swa00
5
Antworten
0
Aufrufe
1.104
586920
5
S
Antworten
8
Aufrufe
472
swa00
swa00
Zurück
Oben Unten