// 여기에서 네트워크 상태를 체크 하면 된다.
BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 네트워크 체크
}
};
위와 같은 방법으로 하면 동작이 잘 된다.
하지만!!!!
구글에서 새로운 N버전을 개발 하면서, 몇가지 사용을 중지하기를 권장하는 Action이 있다.
브로드캐스트를 수신하도록 매니페스트에 등록되어 있더라도, Preview를 대상으로 하는 앱은CONNECTIVITY_ACTION 브로드캐스트를 수신하지 않습니다. 포그라운드에서 실행되는 앱은Context.registerReceiver()로 BroadcastReceiver를 등록하여 여전히 메인 스레드에서CONNECTIVITY_CHANGE를 수신할 수 있습니다.
앱은 ACTION_NEW_PICTURE 또는 ACTION_NEW_VIDEO 브로드캐스트를 송수신할 수 없습니다. 이 최적화는 Preview를 대상으로 하는 앱 뿐만 아니라 모든 앱에 영향을 미칩니다.
출처 : https://developer.android.com/preview/features/background-optimization.html?hl=ko
딱 보시면 아시겠지만, CONNECTIVITY_CHANGE를 사용하면 되겠네!
라는 해결책이 나옵니다.
public class NetworkChangeReceiver extends BroadcastReceiver {
public static final String EVENT_NETWORK_CHAGED = "network_changed";
@Override
public void onReceive(final Context context, final Intent intent) {
// 여기에서 네트워크 상태를 체크 하시면 됩니다.
// 참고로 아래와 같이 네트워크 상태가 바꼈을 때, 로컬 Brocast를 날려서
// 화면에 알린 후, 화면 별로 알맞게 제어 하는 것도 좋은 방법 인듯 하네요.
Intent mIntent = new Intent(EVENT_NETWORK_CHAGED);
context.sendBroadcast(mIntent)
}
}