앞전에 질문글을 올렸었네요...

서비스가 메인스레드에서 구동되는지 몰랐네요...


무튼 제가 구현한 서비스는 mqtt를 이용한 푸시 서비스 인데요....

tcp/ip 접속 방식이라 네트웍이 변경되면 ip를 재전송하여 접속을 유지해야 하는데요...

이때 기존 커넥션을 끊고 다시 재접속을 하게 됩니다....

근데 로그를 찍어보니 disconnect()부분에서 오랜 시간ㅇ ㅣ걸리길래 이 부분을

메인 스레드가 아닌 별도의 스레드로 돌리고 싶어서 아래와 같이 구현 하였습니다...

// Disconnect
        public void disconnect() {
            final Handler handler = new Handler() {
                @Override
                public void handleMessage(Message message) {
                    try {
                        stopKeepAlives();
                        mqttClient.disconnect();
                    } catch (MqttPersistenceException e) {
                        log("MqttException" + (e.getMessage() != null? e.getMessage():" NULL"), e);
                    }
                }
            };
           
            Thread thread = new Thread() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    handler.sendEmptyMessage(0);
                }
            };
           
            thread.start();
        }

이렇게 하면 별도의 스레드로 돌아가는 것 아닌가요...? 이렇게 바꾸어도 똑같이 메인스레드는 멈추네요...
위 작업이 끝날 때까지...ㅠ 저위에 볼드체인 mqttClient.disconnect(); 가 가장 오래 걸리는 부분입니당....ㅠ_ㅠ