Java Android: 1 Sekunde warten

JuarX

Cadet 4th Year
Registriert
Apr. 2011
Beiträge
78
Hallo Community

Ich habe ein Problem mit meinem Programmcode. Ich möchte gerne eine App schreiben, welche wenn ich auf einen Button klicke von 1 bis 10 hochzählt und zwischen dem Hochzählen jeweils von der ersten zur zweiten Zahl 1 Sekunde wartet. Das Problem ist das die App immer hängen bleibt. So sieht der Code aus:
Code:
package test.zaehler;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	private TextView ausgabe1;
	private String ausgabeString;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ausgabe1 = (TextView)findViewById(R.id.textview1);
        
        Button startButton = (Button) findViewById(R.id.startButton);
        
        startButton.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {
				for (int x = 1; x < 11; x++) {
					ausgabeString=Integer.toString(x);
					ausgabe1.setText(ausgabeString);
					
					try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
Ich habe bereits herausgefunden das ich Thread.sleep() nicht in der onClick-Methode laufen lassen darf, nur wie baue ich jetzt ein das die App 1 Sekunde wartet?
 
Du musst den Counter in einem 2. Thread laufen lassen, sonst blockierst du den Dispatcher-Thread der für das Zeichnen der GUI verantwortlich ist. Gibt sicher genügend Beispiele bei google.de.
 
Ok ich hätte nie gedacht das ich so lange brauche um das zu programmieren. Vielen Dank für eure Lösungen aber ich sitze schon 5 Stunden dran und schaffe es einfach nicht, das mit dem eigenen Thread hab ich schon gestern 2 Stunden probiert und verschiedenste Lösungen bei google ausprobiert, ich habe nie einen funktionieren Code hingebracht. Heute auch wieder eine Stunde probiert bevor ich diesen Thread gepostet habe. Und jetzt habe ich mich noch 2 Stunden mit dem timer herumgeschlagen, aber irgendwie funktioniert es einfach nicht. Beim postNewRunnable habe ich die Theorie leider nicht mal kapiert. Hat jemand vielleicht noch eine andere Lösung oder kann es mir anhand eines Codebeispiels veranschaulichen?
 
Hier mal eine Implementation von einem Timer der jede Sekunde 1 ausgibt.

Code:
package my.timer.test;

import java.util.TimerTask;

public class MyTimerTask extends TimerTask {
	
	public void run(){
		System.out.println("1");		
	}

}
docs: http://docs.oracle.com/javase/7/docs/api/java/util/TimerTask.html()

Code:
package my.timer.test;

import java.util.Timer;
public class MyTimerMain {
	
	public static void main(String[] args){
		java.util.Timer myTimer;
		myTimer = new Timer();
		myTimer.scheduleAtFixedRate(new MyTimerTask(), 0, 1000);
	}

}
docs: http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html

Aber Achtung das Ding terminiert so nie!
 
Zuletzt bearbeitet:
Zurück
Oben