0

ボレー非同期タスクを使用して、VPS からデータをダウンロードし、フラグメントとアクティビティで表示します。パブリック ネットワークに接続していて、ネットワーク信号が (非常に) 弱い場合に、このエラーが頻繁に発生します。アプリの簡単なネットワーク チェック機能を使用して、ネットワークに接続していないときにトーストを表示します。このような場合、アクティビティは開始されず、トーストが表示されます。ただし、オンラインでネットワーク信号が非常に弱い場合、アクティビティが開始され、Volley が実行されてエラーがスローされます

java.net.ConnectException: failed to connect to www.website.com/XX.XX.XX.XXX (port 80) after 2500ms: isConnected failed: EHOSTUNREACH (where Xs are the server address).

アプリのこの状態で navdrawer 項目をクリックすると、アクティビティが開き、同じエラーがスローされます。これは私が接続を確認する方法です:

public static boolean isInternetAvailable(Context context)
    {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivityManager.getActiveNetworkInfo();

        if (info == null) {
             Log.d(TAG,"no internet connection");
             return false;
        }
        else
        {
            if(info.isConnected()) {
                Log.d(TAG," internet connection available...");
                return true;
            }
            else {
                Log.d(TAG," noninternet connection");
                return false;
            }

        }
    }

このエラーを解決する方法、またはネットワーク チェック機能をアップグレードして弱いネットワーク信号をチェックする方法について何かアイデアはありますか?

4

2 に答える 2

1
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = connectivityManager.getActiveNetworkInfo();
    DetailedState detailedState = info.getDetailedState();
    if(detailedState == DetailedState.VERIFYING_POOR_LINK){
          // Your checks goes here  
    }

このコードを確認してください。それが役立つことを願っています。

于 2015-03-10T16:57:07.493 に答える