Zeitverzögerung ohne einfaches Warten

  • Hallo,
    ich verwende die Klasse UIUpdater (Code weiter unten). Ich will damit eine Einschaltverzögerung erreichen, wenn ich auf einen Button gedrückt habe. Das funktioniert an sich auch, nur dass dann auch alle weitere 5 Sekunden die run-Methode aufgerufen wird, obwohl ich beim ersten Mal durchlaufen der run-Methode "mUIUpdater.stopUpdates();" ausführe. Wenn ich den Stop Befehlt mit einem anderen Button ausführe, funktioniert es. Warum nicht innerhalb der run-Methode selbst?


    Zeit starten:

    Java
    // Initialize the release button with a listener that for click events
            mSendButton = (Button) findViewById(R.id.buttonRelease);
            mSendButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    //sendMessage("$R0200!");
                    mUIUpdater.startUpdates();
                }
            });


    run-Methode:


    Klasse UIUpdater:

  • Hoi,


    vll überseh ich ja den genialen Hintergedanke, aber warum genau hast du quasi ein Runnable in einem Runnable? So wie ich das grad seh sollte UIUpdater ganz klassisch von Thread erben und gut ist. Dann macht er ein Thread.sleep, das die Zeit die du warten willst dauert, rufst die sendMessage auf und lässt das Ding einfach aus laufen.


    Gruß,
    matze

  • Hi Matze,


    vielen Dank für die Antwort! Bin noch ziemlicher Android Beginner, hab den Code eigentlich nur übernommen. Der Code soll ursprünglich zum periodischen Aufrufen der run-Methode dienen. Macht es dann mehr Sinn?


    Du meinst weil im Konstruktor von UIUpdater ein Runnable angelegt wird und beim Anlegen eines UIUpdater Objekt ein weiteres Runnable übergeben wird?


    Das heißt ich sollte das übergebene Runnable entfernen?

Jetzt mitmachen!

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