Один из моих классов имеет два обработчика для отправки сообщений через регулярный промежуток времени. Этот класс создается в одном из действий. Ниже приведен код:Обработчик runnable работает несколько раз
public class MyClass {
private Boolean started = false;
private Handler handler1 = new Handler();
private Handler handler2 = new Handler();
private Runnable runnable1 = new Runnable() {
@Override
public void run() {
sendMessage("blah");
}
};
private Runnable runnable2 = new Runnable() {
@Override
public void run() {
sendMessage("blah blah");
if (started) {
triggerMessageSending();
}
}
};
}
public void startMessageSending(){
triggerMessageSending();
}
private void triggerMessageSending(){
started = true;
handler1.postDelayed(runnable1, 500);
handler2.postDelayed(runnable2, 1000);
}
public void stopMessageSending(){
started = false;
handler1.removeCallbacks(runnable1);
handler2.removeCallbacks(runnable2);
}
}
Вот моя активность:
public class MyActivity extends Activity {
private MyClass myClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myClass = new MyClass();
myClass.startMessageSending();
}
@Override
protected void onStop() {
super.onStop();
myClass.stopMessageSending();
}
}
Все отлично работает в первый раз. Если я нажмю кнопку «Назад» и перейду к предыдущему действию и вернусь снова (без выхода из приложения), метод sendMessage вызывается дважды. Это будет три, если я сделаю это снова. Он вызывает метод столько раз, сколько я начинаю эту деятельность, не выходя из приложения. Если я выйду из приложения и сделаю это снова, он будет работать нормально в первый раз.
В чем причина этого? Где я ошибаюсь?
Я не уверен, но попробую установить 'myClass = null;' в 'onStop()' метод. –
Пробовал это .. не работает – NewOne
Попробуйте объект 'static' myClass. –