| |||||||
Das Thema "Speicher Problem(?) führt zu Crash" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 09.12.2010
Beiträge: 79
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
| Bei meiner App wird in einer Activity (im Menü), einige Variablen definiert. In einer anderen Activity läuft ein Spiel ab. Wenn man im Spiel ist und und über der Taste Home die App in den Hintergrund setzt, wird nach einiger Zeit ältere Daten vom Speicher genommen. Anscheinend werden auch einige Variablen, die im Menü definiert werden vom Speicher genommen, wenn dieser zu voll wird. Wenn man die App vom Hintergrund wieder aufruft, stürtzt die App ab, weil einige Variablen fehlen. Die App stürzt nicht ab, wenn man es sofort oder nach einigen wenigen Minuten wieder vom Hintergrund aufruft, sondern erst nach einiger Zeit. Bei einen Handy von einen Kumpel würde es nach etwa 15 Minuten abstürzen. Er hat viele Widgets und Hintergrund-Apps die automatisch Informationen anfordern. Daher denke ich, dass es ein Speicher Problem ist. Liegt das Problem ganz woanders? Wie kann ich es am besten testen und debuggen? |
| | |
| | #3 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 09.12.2010
Beiträge: 79
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
In der eigentlichen Activity, wo das Spiel abläuft, kommt es zu einen NullPointerException. Die Stelle, wo es abstürtzt ist ein if-Satz Code: if(ActivityOne.TEST){
//tu was
} |
| | |
| | #4 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
ActivityOne ist wohl die erste Activity? Und TEST ist vom Typ Boolean? Warum übergibst du diese variable nicht einfach im Intent? Oder speicherst sie in einer SharedPrefs? Scheinbar musst du sie ja auch zum Starten des Spiels haben. Oder du definierst ActivityOne als Launcher, dann wird bei einem Neustart diese aufgerufen. |
| | |
| | #5 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 09.12.2010
Beiträge: 79
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
Genau. Ich habe einige final Variblen, die ich dazu benutze, verschiedene Versionen der App auszuspielen. Sollten solche Variablen allgemein in der Launcher gespeichert werden ? Es gibt noch weitere Variablen, die in einer anderen Klasse gespeichert sind. Diese speichern die Spieleinstellungen. Also müsste ich alle Variablen an einer anderen Stelle initialisieren ? Wie würde ich dann die alten Werte beibehalten? |
| | |
| | #6 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Sind die Variablen Konstanten? Also sowas: final int TEST = 1; Wenn ja, dann solltest du sie static final machen: static final int TEST = 1; |
| | |
| | #8 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Dann kann es keine NullPointerException an der Stelle geben |
| | |
| | #9 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 09.12.2010
Beiträge: 79
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
Aus dem Grunde vermute ich ja dass es vom Speicher genommen wurde. Wenn man die App schnell wieder aufgenommen wird, dann funktioniert es einwandfrei. Es stürtzt wirklich nur dann ab, wenn man eine längere Zeit wartet. Ich würde mich wundern, wenn Android OS es wirklich vom Speicher nehmen würde, aber mir fällt keine andere Erklärung dafür ein. Ich versuche nochmal das Problem darzustellen: OpenFeintApp extends Application: Wird auch bei Wiederaufnahme vorher gestartet MenuActivity extends Activity: mehrere final static Variablen weitere Variablen, um Einstellungen zu speichern wird vor Wiederaufnahme nicht aufgerufen - wenn man die App neu startet muss man natürlich am Menü vorbei um ins Spiel zu kommen. Game extends Activity: Stürtzt nicht ab bei schneller Wiederaufnahme der App (bei meinen neuen Samsung Galaxy S2 ohne automatische Aktualisierungen stürtzt es nie ab - jedenfalls noch nicht vorgekommen) Stürtzt ab, wenn man längere Zeit wartet (beim Samsung Galaxy S, worauf viele Sachen automatisch abgerufen werden) Und Log gibt einen NullPointerException bei so einer Zeile: if (MenuActivity.FINAL_STATIC_VARIABLE) doSomething(); |
| | |
| | #10 (permalink) |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
|
Also entweder es ist ein richtig übler Bug im Classloader der VM, die Variable ist nicht final static und direkt initialisiert oder es ist die falsche Zeile.
|
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Speicher-Problem | ErTeX | Motorola Milestone XT720 Forum | 27 | 31.03.2011 16:55 |
| Problem: Speicher | stefaniee | HTC Wildfire Forum | 2 | 26.02.2011 09:27 |
| Kontakte verknüpfen führt zu Problem | keiyuu | HTC Desire Forum | 3 | 01.08.2010 18:07 |
| W-Lan Problem - Crash | MartN | Motorola Milestone Forum | 0 | 09.04.2010 20:02 |
| Speicher problem!!! | markus90 | T-Mobile G1 Forum | 17 | 24.03.2009 13:36 |