안녕하세요...

 

지금 일정한 시간간격으로 서버에 파킷을 전송하고 있습니다.

 

그것을 처음에는 스레드에서 .loop를 돌리고

 

mHandler.sendEmptyMessageDelayed(CHK_KEEPALIVE, KEEPALIVE_TIMEOUT * 1000);

 

이것으로 시간간격으로 이벤트를 발생시켜 파킷을 전송하였는데 폰을 콤에 연결하고 실험하면 서버에 파킷이 제대로 올라 옵니다.

(절전모드이건 상관없이...)

 

그런데 케블을 뽑고 하면 화면이 켜진상태에서는 제대로 파킷이 올라가는데 절전모드상에서는 파킷이 올라오지 않습니다...

 

그리하여 이벤트 문제인가하여 스레드에서 슬립을 주어 파킷을 전송하도록 하였습니다.

 

@Override
 public void run() {
  /*Looper.prepare();
   mHandler.sendEmptyMessageDelayed(CHK_KEEPALIVE, KEEPALIVE_TIMEOUT * 1000);
  mLoop = Looper.myLooper();
  Looper.loop();*/


  int keepTime = 0;
  while(!bExit)
  {
     Log.e("Send Keep Alive", "Keep Alive");
     sendKeepAlive();
   }
   try {
    Thread.sleep(SEND_TIMEOUT * 1000);
   } catch (InterruptedException e) {
       e.printStackTrace();
   }
  }
 }

 

그런데도 절전모드에서는 파킷이 전송되지 않았습니다.

 

절전모드에서 깨여나면 파킷이 전송되고....

 

이것이 절전모드에서 스레드가 suspend되는것일가요 아니면 파킷 전송이 않되는것입니까?(Udp소켓입니다)

 

그리고 절전모드에서 이벤트를 일으키면 사건이 먹지 않는가요?

 

mHandler.sendEmptyMessageDelayed(CHK_KEEPALIVE, KEEPALIVE_TIMEOUT * 1000);

 

이것때문에 고심이 많아요....

 

꼭 답변 부탁드립니다....