取消Runnable

时间:2011-12-28 23:18:55

标签: android

我最终设法让我的其他帖子排序;创建一种每秒钟更新GUI的方法。所以我的runnable运行正常,但现在我已经在GUI上添加了一个按钮,用于停止运行。但你是怎么做到的?

我已尝试过此代码:

 // 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以便使用它,因此我不会手动创建新的Thread并向其添加run()方法。你是怎么做到的?

由于

1 个答案:

答案 0 :(得分: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()方法结束,线程被清理。