【发布时间】:2016-10-03 08:09:43
【问题描述】:
我的一个班级有两个处理程序来定期发送消息。此类在其中一个活动中实例化。下面是代码:
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;。 -
试过了..不工作
-
尝试使用
staticmyClass 对象。
标签: android runnable android-handler