1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Landscape - Portrait wechsel onCreate neu aufgerufen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Tyler, 25.03.2011.

  1. Tyler, 25.03.2011 #1
    Tyler

    Tyler Threadstarter Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    19.03.2011
    Hallo,
    ich habe ein Problem. In der onCreate rufe ich einige Methoden auf, die wirklich nur beim Start der Activity aufgerufen werden sollen.
    Wenn ich die Anwendung ausführe und mein Handy so drehe, dass es vom Landscape in den Portrait Modus wechselt oder andersherum werden die Methoden neu aufgerufen. Einzig logischer Grund kann sein, dass die onCreate erneut ausgeführt wird. Wie kann ich das unterbinden? Gibt es eine andere [FONT=&quot]Platzierungsmöglichkeit [/FONT]meiner Methodenaufrufe?
    Ich weiß, dass ich es auf einen Modus beschränken könnte um das Problem zu umgehen, aber das ist nicht gerade meine Wunschlösung.
     
  2. garak, 25.03.2011 #2
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,794
    Registriert seit:
    12.12.2009
    OnCreate wird tatsächlich immer aufgerufen. Du musst dir ein Flag setzten, dann weißt du ob dein Programm neu gestartet wurde oder während des Betriebs nur das Gerät gedreht wurde.
     
    Tyler bedankt sich.
  3. muck, 25.03.2011 #3
    muck

    muck Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    7
    Registriert seit:
    07.11.2010
    Das Falg könntest Du in onSaveInstanceState setzen:
    Code:
    @Override
    protected void onSaveInstanceState (Bundle outState) {
     outState.putBoolean("RESTART", true);
     super.onSaveInstanceState(outState);
    }
    
    in onCreate kanst Du das dann wie folgt abfragen:
    Code:
    if (savedInstanceState == null) {
     // Neustart der Anwedung
    }
    else {
     // Wenn Du die Information an mehreren Stellen benötigst kannst Du restart auch global machen oder auch ganz weglassen wenn es Dir reicht zu wissen dass es ein Restart ist.
     bool restart = savedInstanceState.getBoolean("RESTART");
    }
    
    Je nachdem wie Deine Activity aufgebaut ist nur noch als Anmerkung um evtl. auftretende Seiteneffekte von vornherein mitzubedenken:
    onSaveInstanceState wird auch aufgerufen wenn das BS Deine Activity z.B. aus Speichermangel beendet. Kommt der User zur Activity zurück wird sie ebenfalls neu gestartet. Android kümmert sich in vielen Fällen selbst darum das die Activity wieder so hochkommt wie sie verlassen wurde aber nicht in allen.
     
    Tyler bedankt sich.

Diese Seite empfehlen