我的一個類有兩個處理程序以固定的時間間隔發送消息。這個類在其中一個活動中被實例化。下面是代碼:Handler 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方法兩次。如果我再做一次,這會變成三。它會在不退出應用程序的情況下多次調用此方法。如果我退出應用程序並再次執行此操作,則它第一次可以正常工作。
這是什麼原因?我錯在哪裏?
我不確定,但嘗試在'onStop()'方法中設置'myClass = null;'。 –
試過了..不工作 – NewOne
試着用'static' myClass對象。 –