Blöde Anfängerfrage zur Endlosschleife

  • Hi.. habe da mal eine ganz blöde frage..


    ich habe einen Start-Button und einen Stop-Button.. jetzt möchte ich beim Start-Klick eine Schleife so lange im loop laufen lassen, bis der Stop-Button geklickt wurde..
    habe das über die do/while & while -schleife versucht aber dabei wird immer eine Endlosschleife erzeugt und die app stürzt ab.. meine frage ist nun, wie löse ich das?

  • Hallo ;)
    deine App stürtzt ab (bzw hängt sich auf), weil du sie in eine Endlosschleife laufen lässt...ganz einfach ;)
    Du musst den UI Thread immer responsive halten, sonst schießt dir Android deine App ab.


    Also anstatt die Schleife auf dem UI Thread auszuführen, solltest du einen neuen Thread erzeugen und die Loop darin
    laufen lassen.

  • Hey :)


    danke für die schnelle Antwort :)


    ich weiss nicht ob ich das richitg verstanden habe mit den Threads..
    ich habe nun den Thread erstellt..


    und innerhalb meines onCLicklisteners

    Java
    seq_thread = new Thread(seq_thread);
    seq_thread.run();


    der Thread wird nun ausgeführt.. doch währenddessen kann ich keine anderen Aktionen mehr durchführen(?)

  • 2. Lagere diese Funktionalität in einen Service aus, dann läuft die schleife auch weiter wenn deine App geschlossen ist.

    also das soll es nicht machen ;) .. möchte nur, dass die schleife so lange ausgeführt wird bis man diese via stop-button (bool variable wird per OnClick gesetzt) beendet.. zudem soll man, während die schleife läuft, andere werte verändern können welche wiederrum in der schleife verarbeitet werden

  • ich hab mich falsch ausgedrückt, ich wollte damit sagen: Dann läuft die schleife auch weiter wenn deine App nicht im Vordergrund ist. Langlebige aktivitäten werden vom Android System nach einer gewissen Zeit einfach beendet wenn die App nicht mehr im Vordergrund ist. Aktivitäten in einem Service hingegen laufen weiter.

  • ich hab mich falsch ausgedrückt, ich wollte damit sagen: Dann läuft die schleife auch weiter wenn deine App nicht im Vordergrund ist. Langlebige aktivitäten werden vom Android System nach einer gewissen Zeit einfach beendet wenn die App nicht mehr im Vordergrund ist. Aktivitäten in einem Service hingegen laufen weiter.

    das soll die app zwar nicht machen.. aber danke für die wertvolle info :) .. immer gut zu wissen :)


    habe das problem jetzt endlich gelöst :D .. falls jemand das selbe problem hat .. die lösung war denkbar einfach .. probleme waren nicht nur der thread an sich sondern auch, dass ich innerhalb der threads etwas visuell anzeigen/verändern wollte.. (explizit den loop-status bzw. die position im loop) .. um auf etwas aus der View zuzugreifen musste ich noch innerhalb des Threads einen
    runOnUiThread starten.. hier der code

    vielleicht noch abschliessend eine kleine frage.. wenn ich auf stop-drücke.. also den wert seq_status=false setze.. läuft der thread trotzdem noch zu ende bis er stoppt? .. why? :D


    EDIT:
    ich weiss nicht ob ich es hier reinschreiben oder einen neuen Thread aufmachen soll.. aber warum kann ich nicht zwei MediaPlayer zeitgleich abspielen? .. man hat den Eindruch, sie wären etwas versetzt(?)

  • Du solltest das runOnUiThread nicht verwenden, das ist böse. Agiere lieber mit Handlern, damit kannst du über thread grenzen hinaus kommunizieren und so in dem callback des handlers das grafische element bearbeiten.


    zu deinem Edit: weil man nur einen mediaplayer nutzen sollte. Du holst dir die instanz auf den android weiten mediaplayer, wenn ich das richtig verstanden hab. Wenn du dir da mehrere referenzen holst versucht der beide lieder gleichzeitig abzuspielen und wechselt dann immer zwischen den liedern hin und her in kurzen abständen. oder hab ich da nun was missverstanden?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!