2015-02-09 156 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方法的文檔。