Я начал runnnable, но не назначил его переменной. Как остановить его? Я знаю, что это сочетание removeCallbacksAndMessages() метод, но я не знаю, что параметр для передачи в этому методу, так как я создал анонимный исполняемым:Как удалить Runnable, который не назначен переменной из обработчика
mStartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
h = new Handler();
final int delay = 1000; //milliseconds
h.postDelayed(new Runnable() {
public void run() {
mUpdateRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int mNumberOfPollsForCurrentDay = (int) dataSnapshot.getChildrenCount();
Random r = new Random();
int randomPollInRangeOfCurrentDayNumberOfPolls = r.nextInt((mNumberOfPollsForCurrentDay + 1) - 1) + 1;
int numberOfPollAnswersAtRandomNumber = (int) dataSnapshot.child(String.valueOf(randomPollInRangeOfCurrentDayNumberOfPolls)).child(POLL_ANSWERS_LABEL).getChildrenCount();
Random rr = new Random();
int randomAnswerBasedFromRandomPollAnswerChoices = rr.nextInt((numberOfPollAnswersAtRandomNumber + 1) - 1) + 1;
mUpdateRef.child(String.valueOf(randomPollInRangeOfCurrentDayNumberOfPolls)).child(POLL_ANSWERS_LABEL).child(String.valueOf(randomAnswerBasedFromRandomPollAnswerChoices)).child("Vote_Count").runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mutableData.setValue((Long) mutableData.getValue() + 1);
return Transaction.success(mutableData);
}
@Override
public void onComplete(FirebaseError firebaseError, boolean b, DataSnapshot dataSnapshot) {
}
});
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
h.postDelayed(this, delay);
}
}, delay);
}
});
Я думаю, вам нужно остановить Handler, http://stackoverflow.com/questions/18671067/how-to-stop-handler-runnable – stjepano
@stjepano - Нет, это Runnable является анонимным классом –
Один из способов, чтобы остановить runnable - поставить «активное» логическое значение в самом начале 'run()' и переключить его, чтобы убить runnable. –