2013-03-07 3 views
0

Как создать кнопку, которая приостанавливает поток, который находится внутри цикла, и другую кнопку, которую возобновляет .Кнопка syncronized with thread android

Runnable myRun = new Runnable(){ 

общественности недействительным запуска() {

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 = bt1

+0

Handler подойдет для этой цели – Pragnani

ответ

0

Ниже приведено подсказку, я думаю, вы можете использовать ее для своей проблемы. Его скопировали из ссылки, вставленной в конец.

Ожидание может быть «проснуто» другим процессом, вызывающим уведомление на мониторе, который ждет, в то время как сон не может. Кроме того, ожидание (и уведомление) должно произойти в блоке синхронизированного на объекте монитора, тогда сон не:

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

На данный момент в данный момент выполняющийся поток ожидает и высвобождает монитор. Другая нить может сделать

синхронизированный (mon) {mon.notify(); } (На одном и том же объекте mon), и первый поток (при условии, что это единственный поток, ожидающий на мониторе) проснется.

Проверить Difference between wait() and sleep()

+0

пожалуйста просмотрите код. – lavin