Android Update TextView in Thread und Runnable

Ich möchte in Android einen einfachen Timer erstellen, der jede Sekunde eine TextView aktualisiert. Es zählt einfach Sekunden wie in Minesweeper.

Das Problem ist, wenn ich die tvTime.setText (...) ignoriere (mache es //tvTime.setText (...), in LogCat wird jede Sekunde die folgende Nummer gedruckt. Aber wenn ich diese Nummer auf a setzen möchte TextView (erstellt in einem anderen Thread), das Programm stürzt ab.

Hat jemand eine Idee, wie man das einfach löst?

Hier ist der Code (Methode wird beim Start aufgerufen):

private void startTimerThread() {
    Thread th = new Thread(new Runnable() {
        private long startTime = System.currentTimeMillis();
        public void run() {
            while (gameState == GameState.Playing) {
                System.out.println((System.currentTimeMillis() - this.startTime) / 1000);
                tvTime.setText("" + ((System.currentTimeMillis() - this.startTime) / 1000));
                try {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    });
    th.start();
}

BEARBEITEN:

Endlich hab ich es. Hier ist die Lösung für diejenigen, die interessiert sind.

private void startTimerThread() {       
    Thread th = new Thread(new Runnable() {
        private long startTime = System.currentTimeMillis();
        public void run() {
            while (gameState == GameState.Playing) {                
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tvTime.setText(""+((System.currentTimeMillis()-startTime)/1000));
                    }
                });
                try {
                    Thread.sleep(1000);
                } 
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    });
    th.start();
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage