2013-03-07 57 views
0

如何創建一個暫停循環內部線程的按鈕以及另一個繼續執行的按鈕。與線程同步的按鈕android

Runnable myRun = new Runnable(){ 

公共無效的run(){

for(int j =0 ;j<=words.length;j++){ 

     synchronized(this){ 
      try { 

       wait(sleepTime); 

       bt.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View arg0) { 

           try { 
            wait(); 
           } catch (InterruptedException e) { 
            e.printStackTrace(); 
           } 
        }}); 
       bt2.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View arg0) { 
         notify(); 

        } 
       }); 
       } catch (InterruptedException e) { 
       e.printStackTrace(); 

      } } 
     runOnUiThread(new Runnable(){ 
      public void run(){ 
       try { 
        et.setText(words[i]); 
        i++; 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      }}); 
     }}}; 

做了一些東西,說words.lenght = 1000次
然後,假設用戶要採取ID爲
點擊暫停按鈕之間打破= BT此按鈕暫停線程直到用戶 點擊恢復與id = bt1

+0

處理器將適合用於此目的 – Pragnani 2013-03-07 07:18:06

回答

0

下面是一個提示,我認爲你可以用你的問題。它從我粘貼的鏈接複製而來。

等待可以通過另一個進程調用通知在監視器上等待,而睡眠不能「喚醒」。還等待(和通知)必須在監控對象,而睡在同步塊發生不:

Object mon = ...; 
synchronized (mon) { 
    mon.wait(); 
} 

在這一點上當前正在執行的線程等待並釋放監視器。另一個線程可能會做

synchronized(mon){mon.notify(); }(在同一個mon對象上),第一個線程(假設它是在顯示器上等待的唯一線程)會喚醒。

檢查Difference between wait() and sleep()

+0

請查看代碼。 – lavin 2013-03-07 16:38:18