[android] 안드로이드 앱에서의 오프라인 모드를 활용한 네트워크 에러 핸들링

안드로이드 앱을 개발할 때, 네트워크 연결이 끊겼을 때의 사용자 경험을 고려해야 합니다. 이러한 상황은 사용자가 앱을 사용하는 도중에 발생할 수 있으며, 이에 대한 앱의 적절한 대응이 중요합니다. 이번 블로그에서는 안드로이드 앱에서 오프라인 모드를 활용하여 네트워크 에러를 핸들링하는 방법에 대해 알아보겠습니다.

1. 네트워크 연결 상태 확인

앱이 네트워크에 연결되어 있는지 여부를 확인하는 것이 첫 번째 단계입니다. ConnectivityManager 클래스를 사용하여 현재 네트워크 상태를 확인할 수 있습니다.

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
boolean isConnected = activeNetworkInfo != null && activeNetworkInfo.isConnected();

2. 오프라인 상태에서의 에러 핸들링

오프라인 상태에서 네트워크 요청이 실패했을 때, 사용자에게 적절한 안내를 제공해야 합니다. 이를 위해 AlertDialog를 사용하여 사용자에게 네트워크 연결 상태를 알리는 다이얼로그를 표시할 수 있습니다.

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("네트워크에 연결되어 있지 않습니다. 네트워크 설정을 확인해주세요.")
       .setPositiveButton("확인", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               // 다이얼로그 닫기
           }
       });
AlertDialog dialog = builder.create();
dialog.show();

3. 네트워크 연결 복구

네트워크 연결이 복구되면, 사용자에게 알림을 제공하고 필요한 경우 자동으로 작업을 다시 실행할 수 있습니다.

private BroadcastReceiver networkReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if (networkInfo != null && networkInfo.isConnected()) {
            // 네트워크 연결 복구
            // 필요한 작업을 다시 실행
        }
    }
};

안드로이드 앱에서의 오프라인 모드를 활용한 네트워크 에러 핸들링은 사용자 경험을 향상시키는 중요한 요소입니다. 네트워크 연결 상태를 지속적으로 확인하고, 오프라인 상태에서의 적절한 대응 및 네트워크 연결 복구에 대해 고려하여 안정적이고 신뢰할 수 있는 앱을 제공할 수 있습니다.

참고 자료