안드로이드 개발 질문/답변
(글 수 45,052)
컴퓨터에 서버를 두고,
안드로이드 앱과 통신을 하는 구조 입니다.
3G로 설정을 해놨거나, 아예 데이터 통신을 허용하지 않은 경우의 예외처리는 다해놨습니다.
문제점은 wifi설정을 해놓고 이동중에 발생하는 문제 입니다.
1.WiFi가 아주 미세하게 잡혀서 통신이 잘안될때
2.WiFi와 3G간에 아주 빈번히 번갈아 가면서 잡힐때 (폰사용하시는분은 아실겁니다. 와이파이 허용 상태에서 스마트폰이 와이파이에서 벗어나면 자동으로 3G로 이동하게 되고, 그 찰나의 사이에 통신이 끊기게됩니다- 또 반대로 3G->WIFI로 변경될때도 통신이 끊기게 됩니다.)
저 위의 2개의 상황에서 앱이 통신을 하다가 그냥 죽어버리게 되는데요.
SKT의 T미니월드 앱에서 비슷하게 실험해봤더니
"일시적으로 접속이 지연되고 있습니다. 사용에 불편을 드려 죄송합니다."와 같은 문구를 띄우면서 다시 재접속 하게 하는 구조를 가졌던데요
위의 식으로 구현을 하고자 하는데 앱이 계속 죽어버립니다.
어떤식으로 구현을 해야 할지 아직 감이 잘 안잡힙니다.
안드로이드 고수분들 도와주십시요..!
안드로이드 앱과 통신을 하는 구조 입니다.
3G로 설정을 해놨거나, 아예 데이터 통신을 허용하지 않은 경우의 예외처리는 다해놨습니다.
문제점은 wifi설정을 해놓고 이동중에 발생하는 문제 입니다.
1.WiFi가 아주 미세하게 잡혀서 통신이 잘안될때
2.WiFi와 3G간에 아주 빈번히 번갈아 가면서 잡힐때 (폰사용하시는분은 아실겁니다. 와이파이 허용 상태에서 스마트폰이 와이파이에서 벗어나면 자동으로 3G로 이동하게 되고, 그 찰나의 사이에 통신이 끊기게됩니다- 또 반대로 3G->WIFI로 변경될때도 통신이 끊기게 됩니다.)
저 위의 2개의 상황에서 앱이 통신을 하다가 그냥 죽어버리게 되는데요.
SKT의 T미니월드 앱에서 비슷하게 실험해봤더니
"일시적으로 접속이 지연되고 있습니다. 사용에 불편을 드려 죄송합니다."와 같은 문구를 띄우면서 다시 재접속 하게 하는 구조를 가졌던데요
위의 식으로 구현을 하고자 하는데 앱이 계속 죽어버립니다.
어떤식으로 구현을 해야 할지 아직 감이 잘 안잡힙니다.
안드로이드 고수분들 도와주십시요..!
2010.11.10 11:22:34
socket.setSoTimeout(5000);
이런식으로 제한을 걸고 하긴 하는데
이 타임아웃을 어떻게 이용하고 response가 오지 않으면 timeout나도록 하는 방법을 어떻게 구현해야 할지 잘 모르겠습니다.. ㅜ
이런식으로 제한을 걸고 하긴 하는데
이 타임아웃을 어떻게 이용하고 response가 오지 않으면 timeout나도록 하는 방법을 어떻게 구현해야 할지 잘 모르겠습니다.. ㅜ
2010.11.10 11:34:07
프로토콜에 일단 ping request신호를 하나 정의 하시구요...
그 ping에 대한 response도 하나 정의하세요.
둘은 그냥 ping request 받으면 ping response 주는 꼴이구요....
ping request 보낸측에서는 보낸 순간 timer를 실행합니다. 해당타이머가 동작하면 (response가 안오면)
아키텍쳐에서 상단 레이어에 오류 발생을 노티합니다. (이것도 여러방법이 있는데요... 콜백형식이 가장 보편적이겠죠)
만약 response가 오면 타이머를 그냥 강제 종료합니다.
ping request 간격을 잘 조절하는것도 필요하구요...(돈과 관련되어있으니 ㅡㅡㅋ)
근데 그냥 망이 바뀌는 경우 혹은 disconnect되는 경우는 그냥 BroadcastReceiver로 해결이 가능합니다.
ping은 연결된 망의 상태를 알때 필요한거구요... (둘이 엄연히 다릅니다...)
그 ping에 대한 response도 하나 정의하세요.
둘은 그냥 ping request 받으면 ping response 주는 꼴이구요....
ping request 보낸측에서는 보낸 순간 timer를 실행합니다. 해당타이머가 동작하면 (response가 안오면)
아키텍쳐에서 상단 레이어에 오류 발생을 노티합니다. (이것도 여러방법이 있는데요... 콜백형식이 가장 보편적이겠죠)
만약 response가 오면 타이머를 그냥 강제 종료합니다.
ping request 간격을 잘 조절하는것도 필요하구요...(돈과 관련되어있으니 ㅡㅡㅋ)
근데 그냥 망이 바뀌는 경우 혹은 disconnect되는 경우는 그냥 BroadcastReceiver로 해결이 가능합니다.
ping은 연결된 망의 상태를 알때 필요한거구요... (둘이 엄연히 다릅니다...)
server로 request 후 timer를 걸어서 특정시간 안에 response가 오지 않으면 time out 나도록 처리하는 방법이 있습니다.