2014-02-27 6 views
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이 초당 백만 번 같은 메시지로 메시지 처리기를 계속 호출하고 결코 다른 메시지로 넘어가는 메시지를 버리지 않는다고 말했습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

0

체크 포인트 :

  1. activity.doSomething() 메시지 GameMessageHandler.DO_SOMETHING
  2. playerTookSomeAction()하지 반복

라고 그냥 사람이 너무 지루한 느낌 넣다가, 더 나은로 포맷되어 전송하지 않습니다!

+0

뒤로 가져 왔습니다. 리스너가 GameMessageHandler.DO_SOMETHING 메시지를 보낼 때 activity.doSomething()이 호출됩니다. 또한 playerTookSomeAction은 한 번만 호출되지만 루퍼는 DO_SOMTEHING 메시지를 사용하여 메시지 처리기를 반복적으로 호출합니다. – IWriteApps