Rekursion bedenklich?

A

Andro-medanebel

Neues Mitglied
0
Mein Grafikaufbau und meine Programmlogik befindet sich
in onSizeChanged (erst in onSizeChanged sind Breite und
Höhe bekannnt und diese lese ich aus).

Code:
@Override
protected void onSizeChanged(int w, int h, int ow, int oh)
{
 MeinGanzesProgramm();
}

void  MeinGanzesProgramm() 
{
 ...
 if (neustart==true) {MeinGanzesProgramm();}
}
Beim Drehen des Displays wird onSizeChanged aufgerufen
und MeinGanzesProgramm() erneut aufgerufen,
was einem Neustart und damit auch Neuaufbau der Grafik
entspricht, was auch so gewollt ist.

Zusätzlich soll mein Programm eine Menü-Option
"Neustart" bekommen, wo ich dann auch
MeinGanzesProgramm() aufrufen will.

Allerdings frage ich mich, ob der Neustart durch Rekursion
problematisch ist, da sich evtl. ein Stapel von Rücksprungadressen
aufbaut und es bei sehr vielen rekursiven Aufrufen ein Stapelüberlauf
geben könnte.

Ist meine Sorge berechtigt?

Wenn ja:
Ist es möglich, die letzte Rücksprungadresse zu löschen,
bevor MeinGanzesProgramm() erneut aufgerufen wird,
so dass kein Stapel von Rücksprungadressen entsteht?
 
Naja, so wie ich das verstehe, sollte MeinGanzesProgramm(); nur 2 mal aufgerufen werden. Denn wenn du über der if Bedingung die Variable neustart nicht veränderst, kann es zu einer Endlosschleife kommen.

Das ganz Konstrukt ist merkwürdig gebaut. Sollte es bei nur ein paar Aufrufen bleiben, ist es sicher zu verwenden.
 
Ich würd das jetzt auch noch nicht als Rekursion bezeichnen.
Zwar ruft die Methode sich selbst wieder auf, aber vermutlich nicht mehrere x-male zum Berechnen eines Werts oder ähnliches ;)

Ich nutze sowas auch hin und wieder, wobei man dann immer schauen sollte, dass die Funktion nicht zu oft läuft.
 
Zurück
Oben Unten