我最终设法让我的其他帖子排序;创建一种每秒钟更新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()方法。你是怎么做到的?
由于
答案 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()
方法结束,线程被清理。