2016-02-13 1 views
-1
Runnable job = new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      randomNumber = rand.nextInt(99) + 1; 
      arrayList.add(randomNumber); 
      textArrayList.setText("" + arrayList); 
      textRandomNumber.setText("" + randomNumber); 
      if (gameOptionNumber < arrayList.size()) 
      { 
       layoutGameButton.setVisibility(View.VISIBLE); 
      } 

      mHandler.postDelayed(this, 3000); 
     } 
    }; 
    mHandler.post(job); 

...Android Студия Handler вопрос

else if(v == buttonEnter) 
    { 
     if(output.getText().length() != 0) 
     { 
      temp = Integer.parseInt(output.getText().toString()); 
      compareNumber(temp); 
      output.setText(""); 
     } 
    } 
} 

Здесь TextView меняется каждые 3 секунды, и я должен ввести то, что предыдущее число было. Количество изменений меняется каждые 3 секунды, но оно должно прекратиться, когда пользователь не нажимает кнопку в течение 3 секунд до того, как число изменится. Есть ли инструкция, которую я могу вызвать в обработчике, например mHandler.cancel() или что-то в этом роде?

ответ

0

Вы должны сделать это так:

private Handler handler; 
private Runnable job; 

Когда вам нужно остановить размещение исполняемым:

if(handler!=null){ 
    handler.removeCallbacks(job); 
} 

Кроме того, добавить код на OnStop:

@Override 
public void onStop() { 
super.onStop(); 
    if(handler!=null){ 
     handler.removeCallbacks(job); 
    } 
} 

Надежда это Вам поможет.

+0

Когда я помещаю этот код, он говорит, что не может решить символ «задание» – Eric

+0

@ Эрик, я редактировал свой код. –

+0

Заранее спасибо! Я также был бы признателен, если бы вы тоже смогли ответить на этот вопрос. Http://stackoverflow.com/questions/35377003/android-studio-handler-removecallback-doesnt-work – Eric

0

Вы должны удалить свой обратный вызов из обработчика:

Проверьте состояние и удалить обратный вызов

handler.removeCallbacks(job); 
0
mHandler.removeCallbacks(job); 
mHandler.postDelayed(job, 3000); 

это приведет к удалению отложенных обратных вызовов для этого работоспособного и добавить последнюю. Если пользователь не нажимает более 3 секунд, он выведет runnable и выполнит работу.