2010-12-14 29 views
2

Androidアプリケーションを使用してHTTPコールを行う方法はいくつかあります。もし誰かがhttpサーバから画像を持ってきたいのであれば、ひとつの方法を使って画像を持ってくることができます。一方、httpサーバの応答としてJSONやXMLを読んでみたい人は、別の方法でそれを行うことができます。上記の2つのシナリオは、他のシナリオが発生する可能性のある例に過ぎません。私の質問は、私はHttpConnectionタイムアウトのチェックを維持することができる標準的な方法はありますか?特定のシナリオでは、WIFIまたはGPRS接続を使用することができますが、処理時間が長いため、アプリケーションのユーザーエクスペリエンスが阻害されています。どうすればこの問題を確認できますか?以下はAndroidの接続タイムアウト

おかげ

は今、上記のコードは、アドレスのURLからコンテンツ/応答を取得

public boolean readAndSaveFileFromWeb(String url) { 
    byte[] fileRead = null; 
    FileOutputStream fos; 
    try { 
     InputStream is = (InputStream) this.fetch(url); 
     if(is!=null){ 
      fileRead = readBytes(is); 
     }else{ 
      return false; 
     } 
    } catch (MalformedURLException e) { 
     Log.v(TAG, "readAndSaveFileFromWeb Exception: Malformed URL " 
       + e.getMessage()); 
     return false; 
    } catch (IOException e) { 
     Log.v(TAG, " readAndSaveFileFromWeb Exception: IOException" 
       + e.getMessage()); 
     return false; 
    } catch (Exception e) { 
     Log.v(TAG, " readAndSaveFileFromWeb Exception: " + e.getClass()); 
     return false; 
    } 
} 


public Object fetch(String address) throws MalformedURLException, 
     IOException { 
    URL url = new URL(address); 
    Object content = url.getContent(); 

    return content; 
} 

のコード例です。特定のシナリオでは、WIFIまたはGPRS接続が利用可能ですが、接続が遅い場合はデータを取得するのにかかる時間が長くなります。この遅れの間に、私はUIスレッドとは別のスレッドでネットワーク集中型のタスクを実行していますが、アプリケーションはハングアップしています。これはユーザーエクスペリエンスを少し妨げるものです。

+1

あなたの質問は少しあいまいです。説明するためのコード例を投稿できますか? – elevine

答えて

0

HTTPリクエストを実行する前にネットワーク接続をチェックするか、タイムアウト例外をキャッチしてください。

+0

確かに..ネットワーク接続は利用できますが、遅い場合はどうすればいいでしょうか...... –

+0

Try try catchブロックを使用して例外をキャッチ... – Eby