App auf 10"Tablets falsch herum

  • 20 Antworten
  • Letztes Antwortdatum
K

Knoxxx

Fortgeschrittenes Mitglied
0
Hallo,

meine App läuft auf allen Geräten normal, außer auf 10Zoll Tablets. Da ist die App falsch herum. Woran kann das liegen? Ich habe meine App nur im Portrait-Modus. Aber damit kann es ja nichts zu tun haben. Was mache ich falsch?

LG
Knoxxx
 
setze die App auf SensorPortrait und sorge dafür dass sie die Activity nicht neu startet. Habe die Methode grad nicht im Kopf. OnCofigurationChanged() glaube ich musst du überschreiben damit du nciht immer wieder deine Views neu aufbauen musst und so.
 
Was meinst du mit " damit Activity nicht neu startet" ?
 
Knoxxx schrieb:
Was meinst du mit " damit Activity nicht neu startet" ?
Normalerweise wenn man das nicht im Code handelt wird die Activity zerstört und neu gestartet wenn man von Landscape nach reverse Landscape wechselt oder so. Bei rein statischem Portrait oder Landscape passiert das aber nicht.
 
Ich habe den landscape-Modus deaktiviert. Daher habe ich doch nur den rein statischen Portrait-Modus. Folglich wird die Activity auch nicht zerstört, oder?
 
Nein aber wenn du mein Tipp mit dem SensorPortrait machst wird diese höchstwahrscheinlich immer wieder neu created deshalb muss man das abfangen :)
 
Mit android:screenOrientation="sensorPortrait"> hat es geklappt. Auch auf 10"-Geräten läuft es jetzt richtig herum. Super. Danke! Dei App läuft sonst auch ganz normal. Oder meinst du ich brauche noch folgende Methode?

Jaiel schrieb:
sorge dafür dass sie die Activity nicht neu startet. Habe die Methode grad nicht im Kopf. OnCofigurationChanged() glaube ich musst du überschreiben damit du nciht immer wieder deine Views neu aufbauen musst und so.
 
Zuletzt bearbeitet:
Einfach mal testen mit logcat ausgaben in onDestroy und in onCreate. Teste ebenfalls ob in onCreate das Bundle null ist
 
Also wenn ich die App starte, steht nichts von onDestroy und onCreate im LogCat?!
 
Das muss funktionieren!
Code:
@override
protected void onDestroy () {

        super.onDestroy();

        Log.d("TAG","call onDestroy()");

}
 
  • Danke
Reaktionen: missspelled
Danke! Was passiert denn genau, wenn ich das nicht mache? Sürzt die App dann ab?
 
Zuletzt bearbeitet:
Im schlimmsten Fall stürzt Sie ab. Du kannst Objekte im Speicher behalten, die nicht gelöscht werden. Und die Abstürze treten relativ willkürlich auf.

Einfach mal testen, was Jaiel vorgeschlagen hat. Dann bist du auf der sicheren Seite
 
  • Danke
Reaktionen: Jaiel
Ist schon etwas länger her bei mir, aber als ich mal eine App schrieb die auf sensorLandscape war, musste ich die Methode onConfigurationChanged() überschreiben und ich glaube dieser Tag war auch nötig in der MAnifestdatei der Activity: android:configChanges="orientation" damit ich angebe dass meine Activity alles Handelt.

Ich hatte vorher nie Probleme wenn ich einfach nur im Portrait oder Landscape Modus war,wenn die App verlassen wird und man wieder zurück kommt.

Da ich viele Bitmaps im Speicher hatte und diese nicht immer wieder neu geladen werden sollten musste ich das unterbinden.Dazu hatte ich eine if-Verzweigung: if(savedInstanceState==null) also wenn das Bundle objekt dass der onCreate übergeben wird null ist, sollen alle nötigen Resourcen geladen werden.
Das Bundle objekt wurde normalerweise nie null wenn die Activity einmal gestartet wurde. Wie gesagt das war bei Apps die nicht mit Orientierungswechsel geartbeitet haben

Jetzt war es jedoch bei SensorLandscape ohne diese Vorkehrung mit onConfigurationChanged() so, dass das Bundle genullt war und so immer wieder alles neu geladen werden musste.

Ein Speicherleck wäre das schlimmste was passieren kann in so einem Fall, wenn man zum Beispiel eine Referenz auf den Context hat und der nicht weggeräumt wird oder so.

Ich wollte aber auch darauf hinaus dass du bei einem Orientierungswechsel nicht unnötig Ressourcen immer wieder neu laden musst oder den contentView der Activity neu setzt(kann bei schlechtem Codedesign zu dem erwähnten Speicherleck führen, da muss man halt aufpassen).
 
Zuletzt bearbeitet:
ok, aber wie teste ich mit logcat ausgaben in onDestroy und in onCreate und ob in onCreate das Bundle null ist? Wenn ich die App ausführe steht im LogCat nichts von onDestroy und onCreate ?!
 
So wie es marcus.tulius schonmal vorgemacht hat in onDestroy().

Wenn du selber keine logs im Code hinschreibst steht da auch nichts im logCat ...
Das sit wie als ob du Konsolenausgaben mit System.out.println() erzeugst nur im logCat!!!
 
Jaiel schrieb:
Wenn du selber keine logs im Code hinschreibst steht da auch nichts im logCat ...

timthumb.png
 
  • Danke
Reaktionen: Jaiel
ok, folgendes steht im LogCat. Was bedeutet das?

11-08 17:55:32.323: D/TAG(1174): call onDestroy()
11-08 18:10:27.512: D/TAG(1929): call onCreate()
 
:D sorry aber ich weiß nicht was ich darauf antworten soll ^^

deswegen antworte ich mal darauf:
"ok, aber wie teste ich mit logcat ausgaben in onDestroy und in onCreate und ob in onCreate das Bundle null ist?"

Das hier in onCreate rein:

log.d("Ist das Bundle null?",savedInstanceState==null?"ja":"nein");

in onConfigurationChanged dann das hier rein:

log.d("onConfigChange", "Hallo :)");

Und dann einfach mal den Bildschirm drehen und gucken was ausgegeben wird.
 
Reicht es nicht folgenden Code ins Manifest zu schreiben, damit die Activity nicht immer neu gestartet wird?
android:configChanges="screenSize|orientation|keyboardHidden
 
Habe ich ebenfalls versucht ich glaube man muss noch explizit die Methode onConfigchanges() dazuschreiben. Das hatte ich damals auch gelesen hat aber nichts gebracht GLAUBE ich. Probier es aus. Ich denke das eine ist dafür da um zu markieren "Hey mein Code kümmert sich darum" und das andere die Methode dann "Und zwar genau hier". Ich bin mir nicht mehr ganz sicher aber! Einfach testen
 

Ähnliche Themen

G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
595
Gerdchen07
G
L
Antworten
2
Aufrufe
551
Lexub
L
migi01
Antworten
26
Aufrufe
1.985
migi01
migi01
Zurück
Oben Unten