如何启动和停止Runnable
问题描述:
任何人都可以帮助我的项目在下面。我需要使用开始和停止按钮来停止我的Runnable线程。我会在停止按钮中放入什么代码?如何启动和停止Runnable
公共类MainActivity扩展ActionBarActivity实现OnClickListener {
Context context;
Runnable runnable;
Handler handler;
Thread myThread;
Button btnstart, btnstop;
boolean Running1 = true;
Toast toaststat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = this;
btnstart = (Button) findViewById(R.id.button1);
btnstop = (Button) findViewById(R.id.button2);
btnstart.setOnClickListener(this);
btnstop.setOnClickListener(this);
}
public class RunTimer implements Runnable {
@Override
public void run() {
while(Running1){
try{
Thread.sleep(3000);}
catch(InterruptedException e){
e.printStackTrace();
}
handler.post(new Runnable(){
@Override
public void run(){
}
});
}
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1: //START
myThread= new Thread(new RunTimer());
myThread.start();
break;
case R.id.button2: //STOP
break;
}
}
答
你需要做的第一件事是停止线程。曾经有一种stop
方法,但由于提及的原因here已被弃用。
你应该做的是中断要求它停止的线程。当按下按钮2时,您可以调用中断方法来执行此操作。
case R.id.button2: //STOP
myThread.interrupt();
break;
Thread.interrupt产生一个InterruptedException
,你已经发现了。然后您需要在线程内手动中断它。
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
欲了解更多信息,请阅读Thread's interrupt方法的文档。