onConfigurationChanged = restart der Activity ?

  • Antworten:2
Daniel Rosenauer
  • Forum-Beiträge: 4

20.07.2010, 11:03:52 via Website

Guten Tag,

ich hab ein App geschrieben was mir einen Radiostream abspielt welcher einem externen Thread läuft.
Mit dem Playbutton wird dieser getriggert, wenn er läuft wird der Playbutton zu einem Stopbutton und da ist auch schon das Problem.
Wenn ich nun im Landscape Mode wechsle während der Thread läuft, verlier ich die Kontrolle über ihn, soll heißen:
Der Stopbutton wird wieder zum Playbutton (wegen der layout xml für Landscape schätz ich mal) und jetzt kommt das richtig blöde, wenn ich wieder auf Play drück, wird ein weiterer Thread mit dem Radiostream gestartet, das kann man beliebig oft wiederholen.
Nun meine Frage, wie mache ich es das beim wechsel in den landscape mode oder umgekehrt die Variablen gültig bleiben?

Gruß

— geändert am 20.07.2010, 11:04:12

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

20.07.2010, 11:06:23 via Website

wenn gedreht wird, kannst du zb die methode

onSaveInstanceState überschreiben und dort die Variable in das Bundle einfügen. Beim oncreate kannst sie dann wieder auslesen

swordiApps Blog - Website

Antworten
Daniel Rosenauer
  • Forum-Beiträge: 4

20.07.2010, 12:54:23 via Website

Erstmal danke Markus, hab das jetzt so gelöst das wenn gedreht wird, der Thread geschlossen wird und später ein neuer erstellt wird (dauert ja nicht lange so ein webstream aufzubauen, keine schöne Lösung aber funktioniert).
Gibt es überhaupt eine Möglichkeit den Thread bei Saveinstance zu speichern und später wieder aufzurufen(bzw. die Variable sodass sie nicht ungültig wird, der Thread würde ja seelenruhig weiterlaufen), wenn ich wieder in die App reingehe?
Das wäre wichtig wenn nämlich der Homebutton gedrück würde, aktuell schließt sich der Thread bei onsaveinstance, wenn man Home drück wird eben diese Methode auch aufgerufen und der Thread is weg, ganz Blöd :S

/e: alles klar ein Object kann mit onRetainNonConfigurationInstance übergeben werden

— geändert am 20.07.2010, 16:54:23

Antworten