EditText und der scheinbar gespeicherte Inhalt

…wäre schön wenn dem so wäre.

Wenn eine Activity die ein, oder mehrere EditText– Felder enthält   verlassen und danach wieder gestartet wird, dann bleibt der Inhalt der Felder scheinbar erhalten. Greift man dann aber mit xx.getText().toString() den vermeitlich erhaltenen Inhalt ab, ist das Ergebnis ein leerer String.

Die Erkentniss:

Am onSaveInstanceState() führt kein Weg vorbei,wenn man den Inhalt besagter Felder über den Lebenszyklus ihrer Activity hinaus retten möchte.

Focus lost..

Die Folgende Fehlermeldung hatte ich erhalten:

W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=202.125, y[0]=1358.5625, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=5879866, downTime=5875801, deviceId=0, source=0x1002 }

Das Resultat: In der auslösenden Activity wurde der der Klick auf den dort eingebaute Floating Action Button (fab) nicht mehr erkannt, satt dessen, Fehler wie oben beschrieben.

Der Grund:

setContentView(R.layout.activity_new_score);

wurde zweimal aufgerufen. Einmal in on Create() und das zweite Mal in onResume(). Nachdem ich den Befehl in onResume() entfernt hatte, war der Fehler verschwunden und das anklicken des fab wieder erkannt.

Android+ Big Data

Anbei ein paar Notizen zum Umgang mit großen Dateien.

Ich wollte wissen, wie man eine App schreibt, die eine Datenbank mitbringt, ohne das sich der Benutzer eine Datei selber herunterladen muss. Mein Ansatz war eine Datenbank die eine Sternenkarte enthält. Benutzt habe ich dazu die H2- Engine. Größe der Datenbank ca. 134MB.

Erster Versuch: Die Datenbank in den Assests Folder ablegen und von da, beim Start der App, in das Dateisystem kopieren. Das hat keinen Sinn gemacht, es funktioniert zwar, aber verdammt langsam!

Zweiter Versuch: Die Datenbank als Datei in das Filesystem geschrieben (Data/Data….) und beim Start der App geladen. Dauert zwar immer noch relativ lange, aber, es passiert in einer einigermaßen vertretbarer Zeitspanne. Da ist aber noch Optimierungsbedarf! Denn, auch wenn das Gerät gedreht wird, muss wieder gewartet werden.