항상 서버에 백그라운드로 연결이 되어 있어야하는 앱을 만들어야합니다.

일단 WakeLock으로 슬립모드에서도 CPU가 작동하게 되어 있고,

WifiLock으로 슬립모드에서 WiFi가 끊기지 않게 해두었습니다.

그렇지만 모바일 특성상 이동을 많이 하기때문에 항상 WiFi로 연결되는것도 아니고,

3G로 넘어갔다가 다시 WiFi가 잡히면 자동으로 넘어가고, AP도 계속 변경되고 합니다.

이렇게 네트웍 상태가 변경될 경우 접속을 종료하고 바로 재접속을 하게 만들려고 하는데

브로드캐스트로 ConnectivityManager.CONNECTIVITY_ACTION 을 설정해두고 아래와 같이 처리했습니다.

그런데 실제 테스트를 해보면 정상 동작 할 때도 있고 안될때도 있고... 여튼 잘안되네요.. 

제대로 처리한건지 궁금합니다.

 private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();
if(action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

boolean ConnectState = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if(ConnectState) {
disconnec();
}
NetworkInfo networkinfo = 
(NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
if(networkinfo != null) {
try {
// 접속 종료
disconnect();

//재접속
reConnect();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
}
}