2015-02-09 129 views
0

任何人都可以帮助我的项目在下面。我需要使用开始和停止按钮来停止我的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; 
} 



} 

回答

2

你需要做的第一件事是停止线程。曾经有一种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方法的文档。