我想我可能是意外地打开了一些我无意在Eclipse或别的什么环境中打开的设置。我正在开发一个android游戏,从游戏逻辑上讲,当某些事件发生时,我会向主要活动发送消息,以显示特定的东西。
我有以下课程:
public class GameMessageHandler extends Handler {
public static final int DO_SOMETHING = 0;
private final WeakReference<MyActivity> myActivity;
public GameMessageHandler(MyActivity myActivity) {
this.myActivity = new WeakReference<MyActivity>(myActivity);
}
@Override
public void handleMessage(Message msg) {
if (myActivity != null) {
MyActivity activity = myActivity.get();
if (msg.what == DO_SOMETHING) {
//even if the caller only called this one time, this keeps executing forever
activity.doSomething();
}
}
}
}
public class GameEventListenerAndroid implements GameEventListener {
private Handler handler;
public GameEventListenerAndroid(GameMessageHandler gameMessageHandler){
this.handler = gameMessageHandler;
}
@Override
public void playerTookSomeAction() {
//this only gets called one time
handler.sendEmptyMessage(GameMessageHandler.DO_SOMETHING);
}
}我知道这个逻辑是有效的,因为我现在试图运行的是我多次看到它工作后保存的备份,但是正如我刚才所说的,由于某种原因,会以每秒一百万次的方式调用消息处理程序,并且不会丢弃消息以转移到其他东西。
任何帮助都是非常感谢的!
发布于 2014-02-27 13:28:46
检查点:
activity.doSomething()不会发送消息GameMessageHandler.DO_SOMETHINGplayerTookSomeAction()如果有人觉得很无聊,就把它格式化为更好!
https://stackoverflow.com/questions/22069353
复制相似问题