以下任何人都可以帮助我的项目。我需要使用开始和停止按钮停止我的Runnable Thread。我会在停止按钮中输入什么代码?
公共类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;
}
}
答案 0 :(得分:2)
您需要做的第一件事是停止线程。曾经有stop
方法,但由于here提到的原因,该方法已被弃用。
你应该做的是中断要求它停止的线程。按下button2时可以调用中断方法。
case R.id.button2: //STOP
myThread.interrupt();
break;
Thread.interrupt产生一个InterruptedException
,你已经抓住了它。然后,您需要从线程中手动中断它。
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
有关详细信息,请阅读Thread interrupt方法的文档。