안드로이드 개발에서 네트워크 상태를 감지하고 관리하는 데는 ConnectivityManager
와 NetworkCallback
을 사용할 수 있습니다 이들은 앱이 네트워크 연결 상태의 변화를 감지하고 적절하게 반응하는 데 필요한 도구입니다.
ConnectivityManager
는 네트워크 연결(예: Wi-Fi, 4G 등)의 상태를 관리하는 역할을 합니다. 이를 통해 애플리케이션은 현재 네트워크의 상태를 확인하거나 네트워크 연결의 변경을 감지할 수 있습니다.
이런 네트워크 연결의 변경을 감지하려면 NetworkCallback
을 사용해야 합니다. NetworkCallback
은 ConnectivityManager
가 제공하는 메서드 중 하나로, 네트워크 연결의 변경 상황을 알려주는 콜백입니다.
아래는 간단한 예제입니다.
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// 네트워크가 사용 가능해질 때 실행되는 코드
Toast.makeText(context, "네트워크 연결됨", Toast.LENGTH_SHORT).show();
}
@Override
public void onLost(Network network) {
// 네트워크 연결이 끊어졌을 때 실행되는 코드
Toast.makeText(context, "네트워크 연결 끊김", Toast.LENGTH_SHORT).show();
}
@Override
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
// 네트워크 능력이 변경될 때 실행되는 코드
boolean valid = nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
if (valid) {
Toast.makeText(context, "유효한 네트워크 연결", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "유효하지 않은 네트워크 연결", Toast.LENGTH_SHORT).show();
}
}
};
NetworkRequest networkRequest = new NetworkRequest.Builder().build();
connectivityManager.registerNetworkCallback(networkRequest, networkCallback);
위의 코드는 NetworkCallback
을 사용하여 네트워크의 연결 상태가 변경될 때 토스트 메시지를 통해 알려주는 예제입니다. 사용이 끝난 후에는 반드시 unregisterNetworkCallback()
을 호출하여 콜백을 해제해야 합니다.
추가적으로 onCapabilitiesChanged는 네트워크에 어떤 변경점이 발생하면 호출되는 것으로 예시의 NET_CAPABILITY_VALIDATED 는 Network validation check 를 pass 하여 인터넷 사용이 가능한지 여부에 대한 것입니다.
다음 포스트는 DefaultNetworkCallback과 Listen 타입 Request 타입의 NetworkCallback에 대해 설명해보겠습니다
'CSE > Android' 카테고리의 다른 글
Android 에서 특정 네트워크 인터페이스를 이용하여 통신하기 (0) | 2023.05.23 |
---|---|
DefaultNetworkCallback, Listen 타입과 Request 타입 Network Callback 이해하기 (0) | 2023.05.14 |