0
Eclipse에서 의도하지 않은 일부 설정을 실수로 전환했을 수 있습니다. 나는 안드로이드 게임을하고 게임 로직 내에서 일하고 있는데 특정 이벤트가 발생하면 주요 활동에 메시지를 보내 특정 사물을 표시합니다. Android Handler가 Looper 대신 Looper에 의해 Looper에 의해 반복적으로 호출되는 경우 사용 후
나는 다음과 같은 클래스가 :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);
}
}
나는 내가 지금 실행하려고하고있어 내가 여러 번 일을 본 후에 내가 저장 한 백업에서 있기 때문에이 논리가 작동을 알고 있지만, 같은 을 나는 지금 어떤 일이 일어나고 있는지에 대해 어떤 이유에서인지 Looper
이 초당 백만 번 같은 메시지로 메시지 처리기를 계속 호출하고 결코 다른 메시지로 넘어가는 메시지를 버리지 않는다고 말했습니다.
도움을 주시면 대단히 감사하겠습니다.
뒤로 가져 왔습니다. 리스너가 GameMessageHandler.DO_SOMETHING 메시지를 보낼 때 activity.doSomething()이 호출됩니다. 또한 playerTookSomeAction은 한 번만 호출되지만 루퍼는 DO_SOMTEHING 메시지를 사용하여 메시지 처리기를 반복적으로 호출합니다. – IWriteApps