App an gleicher Stelle fortsetzen

  • Antworten:15
Hans
  • Forum-Beiträge: 14

26.01.2011, 12:34:55 via Website

Hallo zusammen,

da meine Suche keinen Erfolg brachte hoffe ich, dass ihr mir helfen könnt...

Ich habe eine Radio App erstellt, welche bereits im Einsatz ist - soweit alles bestens.
Wenn der User nun Radio hören möchte und auf PLAY drückt, dann wird Musik abgespielt und der PLAY Button in den PAUSE Button geändert - diesen Status halte ich in einer Variablen.

Wenn der User nun über den Android ZURÜCK Button das Programm "verlässt" (Musik läuft weiter, war so gewünscht), und dann erneut aufruft, so wird der Status neu initialisiert, als der PLAY Button steht wieder auf PLAY, sollte aber auf PAUSE stehen, da ja immernoch Musik gespielt wird.

Frage:
Gibt es eine Möglichkeit, Variablen einer App "global" zu halten?
Oder hat evtl. jemand eine andere Idee das Problem zu lösen? Kann man Apps "minimieren" und bei Klick auf das App Icon wieder dort fortsetzen, wo man es "minimiert" hat?


Vielen Dank für eure Mühe!

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

26.01.2011, 12:53:51 via Website

einfach beim start der activity checken ob music stream läuft,

wenn ja - button states setzen

wenn nein - alles normal starten

swordiApps Blog - Website

Antworten
Hans
  • Forum-Beiträge: 14

26.01.2011, 13:01:06 via Website

Hi

ich danke Dir vielmals für die schnelle Antwort!

Da aber aus 3 verschiedenen Streams (Buttons) ausgewählt werden kann, müsste ich noch irgendwie herausfinden, welcher der drei gerade läuft - bzw. einfach dort weitermachen, wo "minimiert" wurde...

Geht das? Auslesen von Variablen einer neu aufgerufenen "bereits gestarteten" App?

Inzw. hab ich was in Richtung ActivityManager gefunden - werde ich mal versuchen...

Danke auf jeden Fall!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

26.01.2011, 13:06:09 via Website

Ich würds auch auf jeden Fall vom Stream abhängig machen und nicht einfach blind speichern.
Sonst bricht der Stream ab, wird beendet, oder sonst was was deine App nicht mitbekommt...du startest die neu und dann haste das gleiche Problem nur umgekehrt. Keine Musik aber der Button steht auf PAUSE.

— geändert am 26.01.2011, 13:08:52

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

26.01.2011, 13:06:27 via Website

naja wenn deine streams im hintergrund laufen, wirst du einen service haben.

diese wird sicher wissen, was er gerade spielt ;)

swordiApps Blog - Website

Antworten
Hans
  • Forum-Beiträge: 14

26.01.2011, 13:22:20 via Website

Danke Euch!

Wie gesagt, ich versuch´s mal über den ActivityManager...

Aber nur zum Verständnis, nicht, dass wir aneinander vorbeireden...;-)

Grundsätzlich funktioniert die App ja bestens, ist bereits veröffentlicht und alles tut soweit das was es soll.

User klickt auf Button 1 --> Status Flag wird auf 1 gesetzt und dieser Buttons in PAUSE Grafik getauscht
Wenn der User nun mit HOME oder ZURÜCK die App "ausblendet" (wie gesagt, App / Sound läuft natürlich noch, solles ja auch) und irgendwann die App aber wieder "einblenden" möchte (weil er z.B. einen anderen der 3 Streams wählen möchte), dann sollen nicht (wie momentan) alle Buttons auf Anfang stehen, sondern in dem jeweiligen vorher gewählten Status.

Werde ich testen und gerne hier Feedback dazu geben.

Vielen Dank für Eure Hilfe bis hierher!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

26.01.2011, 13:27:22 via Website

Ich glaub das haben wir schon richtig verstanden :)
Dennoch sollte der Zustand vom tatsächlichen Zustand des Streams abhängig sein, nicht von einem gespeicherten Wert.
Denn wenn der Stream abschmiert oder sonstwas, kriegt dieser gespeicherte Wert das nicht mit und deine App zeigt beim nächsten Laden einen falschen Zustand.

Antworten
Hans
  • Forum-Beiträge: 14

26.01.2011, 13:53:25 via Website

ich seh gerade, dass meine antwort von eben nicht übermittelt wurde....hoppla...

also nochmals:


jetzt hab ich dich richtig verstanden!

hast völlig recht, kann ich ja anhand meiner streams / media player objekte "sehen", welcher button auf aktiv gesetzt sein muss - logisch...danke für den hinweis!

löst zwar glaub nicht mein ursprungsproblem (wie "maximiere" ich eine "minimierte" laufende app im zustand beim minimieren), aber wie gesagt ist das glaub über ActivityManager lösbar....werde ich checken.

nochmals vielen dank!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

26.01.2011, 14:20:54 via Website

Schau dir mal den Lifecycle von Activities an.
Wenn du die über den HOME Button minimierst bleibt sie vollständig im Speicher, also musst du nix zwischenspeichern.
Wenn du sie über den BACK Button verlässt, wird die Instanz zerstört, d.h. du hast nix zum wiederherstellen...beim nächsten Start der App wird eine völlig neue Instanz der Activity erstellt, die neu initialisiert werden muss.

Das kannst Du entweder über die Bundles machen, die du in den Methoden onPause() und im onCreate() übergeben bekommst... ich mein jedenfalls die waren es ... ich schreib das grad aus dem Kopf :)
Damit kannst du den Zustand von Instanzen einer Activity zwischenspeichern...im onPause Werte reinsetzen, dann sind sie im nächsten onCreate wieder drin.

Ansonsten gibts da z.B. auch noch die SharedPreferences.

— geändert am 26.01.2011, 14:22:30

Antworten
Hans
  • Forum-Beiträge: 14

26.01.2011, 14:49:32 via Website

ok, werde ich mir auf jeden fall anschauen - wäre natürlich auch sinnvoll gewesen dies vorher zu machen...;-)

du schreibst, mit ZURÜCK wird die instanz zerstört....wie kommt es dann, dass die App (in dem fall der sound) weiterläuft....müsste der dann nicht auch "beendet werden" - das nur aus interesse.

aber ich teste jetzt mal die erwähnten möglichkeiten und melde mich gerne wieder, wenn es klemmt....

danke dir!

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

26.01.2011, 14:56:59 via Website

Hängt davon ab was den Sound abspielt.
Wenn das ein Service ist, dann läuft der weiter.

Auch Variablen, die als static deklariert sind, bleiben eine gewisse Zeit erhalten...spätestens wenn die DalvikVM aber den Speicher aufräumt und die Klassen unloaded ist das dann aber auch weg.

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

26.01.2011, 15:22:14 via Website

Hans
ok, werde ich mir auf jeden fall anschauen - wäre natürlich auch sinnvoll gewesen dies vorher zu machen...;-)

du schreibst, mit ZURÜCK wird die instanz zerstört....wie kommt es dann, dass die App (in dem fall der sound) weiterläuft....müsste der dann nicht auch "beendet werden" - das nur aus interesse.

das solltest du ja wissen, ist ja deine app oder?

swordiApps Blog - Website

Antworten
Hans
  • Forum-Beiträge: 14

26.01.2011, 15:43:10 via Website

tja, sollte ich wissen - da hast du recht..

als ich die app entwickelte und der ANDROID button ZURÜCK schon exakt das machte was ich wollte (weiterstreamen und "minimieren", hab ich mich nicht weiter darum gekümmert....ich reagier auf den BACK button gar nicht - das was das smartphone da schon automatisch macht, war eigentlich ok.

nach umgesetzter app nr. 3 ist man offensichtlich noch kein profi...;-)

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

26.01.2011, 16:53:01 via App

man muss kein profi sein um zu wissen was man tut :-)

swordiApps Blog - Website

Mac Systems

Antworten
Nightfly
  • Forum-Beiträge: 25

27.01.2011, 23:08:36 via Website

Habe da auch mal eine änliche Frage zu dem Problem: Mein Bildschirm wird nach 1 Minute schwarz auch wenn die App läuft, man aber keine Eingaben macht. Entsperre ich dann wieder den Bildschirm wird die App neu gestartet. Teilweise sieht es so aus als würde die App dann zwei mal laufen.

Kann man das irgendwie verhindern?

Ich habe gelesen man kann die Energyspar Funktion aus der App raus abschalten?!

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

27.01.2011, 23:43:31 via Website

Auch das lässt sich durch entsprechendes Studium des Lifecyle Managements entsprechend behandeln Nightfly. Niemand der auf Android entwickeln möchte, kommt um das herum.

Rafael hat es im Grunde auch schon erwähnt .. .

Zusätzlich hat man auch noch die Möglichkeit im Manifest Angaben zum Startverhalten einer Activity zu machen.

Schau Dir hierzu mal die Beschreibung von
android:launchMode
auf developer.android.com an.

lg Voss

Antworten