2011-12-28 4 views
1

В конечном итоге мне удалось получить мой другой пост, отсортированный; чтобы создать способ обновления GUI каждую секунду или около того. Таким образом, моя runnable работает нормально, но теперь я добавил кнопку в GUI, который предназначен для остановки runnable. Но как вы это делаете?Отмена Runnable

Я попробовал этот код:

// Button to stop the runnable 
    stop = (Button) findViewById(R.id.stop); 
    stop.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      handler.removeCallbacksAndMessages(timerTask.class); 

     } 
    }); 

я реализую Runnable для того, чтобы использовать его, поэтому я не создавать новую тему вручную и добавить метод Run() к нему. Итак, как вы это делаете?

Thanks

ответ

2

Вы не можете просто убить эту тему. Вам нужно будет добавить метод для реализации объекта Runnable, который подтверждает запрос на остановку. Затем этот метод переворачивает условие, из-за которого ваш метод Runnable.run() должен выйти.

public class YourClass implements Runnable { 

    private boolean keepGoing = true; 

    public void run() { 
     while(keepGoing) { 
      // Do important work! 
     } 
    } 

    public void stop() { 
     this.keepGoing = false; 
    } 
} 

Так что в вашем onClick(View v) реализации для вашей кнопки остановки, вы могли бы назвать yourClassInstance.stop(). Это прерывает цикл, метод run() заканчивается, и поток очищается.

+0

Можете ли вы немного разобраться? Я попробовал то, что вы сказали выше, и код просто начал вообще - графический интерфейс не меняется – Katana24

+0

* Извините, я имел в виду, что не начинался вообще. GUI не обновляется, но оба метода run() и while() введены – Katana24

+0

@ Katana24 Отредактировал мой ответ, надеюсь, это поможет. – Argyle