안드로이드 개발 질문/답변
(글 수 45,052)
소켓통신을 이용하여 서버와 주기적으로 데이터를 주고받고 있습니다.
앱이 꺼져 있는 동안에도 서버와의 연결을 유지하려고 하는데,
3G일때나, wifi일 때나 문제없이 잘 동작합니다.
하지만, 3G -> wifi로의 전환이나, wifi->3G 전환 등등 네트워크가 바뀔 때는 정말 커넥션 관리가 쉽지 않네요.
3G->wifi 등으로 네트웍을 바꿀 경우, 계속 소켓 타임아웃이 날때까지 멍청하게 기다립니다;;
소켓 타임아웃은 20초를 준 상태구요, 결국 20초를 기다린다는 소리...
생각보다 20초가 너무 길더군요.
http 방식의 연결은 안되면 다시 하면 되니까 별 문제는 없는데, socket의 경우 연결을 지속적으로 유지해야 하기 때문에 이게 참 골때리네요.
Connectivity Service를 이용, 네트웍이 바뀔때마다 디스커넥트 / 커넥트를 시도하는데,
어째서 앱이 시작할때도 동작하는건지 ㅡㅡ;;
wifi state를 체크하는 방법도 써볼까 했는데 그건 3G를 체크할 방법이 없어서 포기했네요
어떤 식으로 해야 커넥션 유지를 할 수 있을지 조언 기다리겠습니다.



