用于停止线程的按钮

时间:2014-03-25 11:44:21

标签: android button togglebutton thread-sleep

我创建了一个按钮,现在我想添加,如果我点击它,线程应该睡觉。现在我遇到的问题是,如果我点击按钮,程序就不会睡觉。我通过添加设置另一个背景来测试按钮的工作。

ToggleButton t;
LinearLayout l;
boolean pausegedrückt;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    tts = new TextToSpeech(this, this);
    pausegedrückt=false;

public void Crunch(int anzahl) {


         setContentView(R.layout.crunch); 

        //Start und Stop Button
            t=(ToggleButton) findViewById(R.id.toggleButton1);
            t.setOnCheckedChangeListener(this);
            l=(LinearLayout)findViewById(R.id.layout);

        while (pausegedrückt) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }            
         tts.speak("Übung Grandsch: In 10 Sekunden geht`s los! Mach dich bereit!", TextToSpeech.QUEUE_ADD, null);
         tts.playSilence(9000, TextToSpeech.QUEUE_ADD, null);
         tts.speak("Los gehts!", TextToSpeech.QUEUE_ADD, null);
         tts.speak("Mache" + anzahl + "Wiederholungen!" , TextToSpeech.QUEUE_ADD, null);
         for (int i = 1; i < anzahl+1; i++) {
                String str = String.valueOf(i);
                tts.speak(str, TextToSpeech.QUEUE_ADD, null);
                tts.playSilence(3000, TextToSpeech.QUEUE_ADD, null); }
         tts.speak("Übung beendet!", TextToSpeech.QUEUE_ADD, null);


    }

@Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if (isChecked) {
            l.setBackgroundColor(Color.BLUE);
            pausegedrückt=true;
        } else {
            l.setBackgroundColor(Color.BLACK);
            pausegedrückt=false;
        }

    }

1 个答案:

答案 0 :(得分:0)

这是创建线程的正确方法

    Thread timer = new Thread() {
        @Override
        public void run() {
            try {
                //try something here
            } catch (InterruptedException e) {
                e.printStackTrace();
        }
    };
    timer.start();

让你的线程睡觉

timer.sleep(1000);