Timer und setText funktionieren nicht in Kombination

markus.tullius schrieb:
Erklärung für dein Bug. runOnUiThread() wir erst nach dem Aufruf von onPostExecute() ausgeführt. Der Grund ist die Nebenläufigkeit. Sobald Thread und Handler im Spiel sind entscheidet das Sytem, welchen Code es ausführen möchte. Es gibt bei Thread keine Gleichzeitigkeit. Am besten du liest Dich da mal rein.

Hast du schon mal versucht, den ganzen Thread foobar wegzulassen? Im Endeffekt macht der folgende Code das gleiche:
Code:
onClickStartTimer(View v) {
     wert++; // besser als wert += 1;
    wertTV.setText(String.valueOf(w));

}
Sorry wenn ich mich hier nochmal einklinke, wenns stört Antwort auch gerne per PN: wieso ist wert++ besser als wert +=1?

Edit: tapatalk meint wohl 3x zu Posten...
 
@lordzwieack

++ kommt aus c / c++ und ist ein Operator. Es ist einfach die gängige Methode irgendetwas um 1 zu erhöhen. Und ist eine kleine Ecke schneller als +=1 ;
 
  • Danke
Reaktionen: lordzwieback
markus.tullius schrieb:
Erklärung für dein Bug. runOnUiThread() wir erst nach dem Aufruf von onPostExecute() ausgeführt. Der Grund ist die Nebenläufigkeit. Sobald Thread und Handler im Spiel sind entscheidet das Sytem, welchen Code es ausführen möchte. Es gibt bei Thread keine Gleichzeitigkeit. Am besten du liest Dich da mal rein.

Hast du schon mal versucht, den ganzen Thread foobar wegzulassen? Im Endeffekt macht der folgende Code das gleiche:
Code:
onClickStartTimer(View v) {
     wert++; // besser als wert += 1;
    wertTV.setText(String.valueOf(w));

}
Danke Markus,
für die Erklärung der Nebenläufigkeit. Jetzt funktioniert diese Konstruktion.
Zum Sinn:
Der vorliegende Code ist nur eine Vereinfachung zu einer Timer-gesteuerten Anzeige von Werten. Dabei geht es mir um das Verstehen der Threads-Technik deren Funktionen und Abläufe.
Ich werde nun versuchen die Timer-Steuerung einzubinden,
lg heinz
 
Abschließend noch der Code wie ich es mir vorstelle. Nochmals Dank an alle die mir geholfen haben!
LG Heinz
Code:
package com.example.heinz.testtimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
    Timer timer;
    private boolean mTimeOk;
    private TextView tx;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("Test Position anzeigen");
        tx = (TextView) findViewById(R.id.text_feld_name);
    }
    /**
     * Timer für Zeitmessung starten
     * @param view
     */
    public void onClickStartTim(View view) {
        timer = new Timer();
        mTimeOk = true;                         //Zeitlimit auf Ok setzen
        timer.schedule (new RunTimer(), 3000);
    }           //end M onClickStartTim
    /**
     * Prüfen ob Reaktion im Zeitlimit
     * @param view
     */
    public void onClickFertig(View view) {
        if (mTimeOk) {
            tx.setText("in Time");
            timer.cancel();
        }
        else tx.setText("outTime");
    }           //end M onClickFertig
    /**
     * TimerTask zum messen von Zeitlimits
     */
    class RunTimer extends  TimerTask {
        public void run() {
                    mTimeOk = false;            //Zeitlimit überschritten
        }           //end M run
    }           //end C RunTimer
}           //end C MainActivity
 
@znieh99
Du muss deine Timer immer beenden ( cancel() ), bevor du eine neue Instanz erzeugst. Sonst hängt das alte Timer-Objekt im Speicher herum, und fängt sich furchtbar an zu langweilen, weil er vom Garbage Collector nicht weggeräumt wird. Und wenn es sich zu sehr langweilt, dann bringt es die App schon mal zum Absturz. ;)
 
  • Danke
Reaktionen: znieh99
@markus.tullius Wozu das gut ist wusste ich, hatte damals in der Berufsschule auch ein wenig C++ und C#. Mir war nur nicht klar, wo der Unterschied liegen soll. Aber danke für die Infos.
 

Ähnliche Themen

C
  • CoderboyPB
Antworten
3
Aufrufe
928
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
962
swa00
swa00
M
  • MikelKatzengreis
Antworten
5
Aufrufe
136
swa00
swa00
Zurück
Oben Unten