4

重複の可能性:
readLine() の実行時にソケットがスタックする

私はjarライブラリを作成し、Androidプロジェクトで使用したいと考えています。このライブラリの重要なメソッドの 1 つを次に示します。

private static String convertStreamToString(InputStream is) {
        /* is - it's the inputStream created from server response entity. 
        I use org.apache.http classes to communicate with server. */
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) { // <-- this line
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sb.toString();
    }

ライブラリを使用して Java アプレットを構築し、それを PC で実行すると、このコードは非常にうまく機能します。

しかし、Android アプリケーションで使用し、エミュレーターまたはデバイスで実行すると、マークされた行で非常に長い間 (常にではありません!) スタックすることがあります。したがって、この場合は SockedTimeoutExceptions が発生します。

ということで、その理由が知りたいです。そして、あなたが私をこの問題から解放するのを手伝ってくれるなら、それは素晴らしいことです.

4

0 に答える 0