0

Windows Phone 7 アプリの一部を Android に移植しています。WP7 の世界でサービスを呼び出す場合、呼び出しは非同期です。サービスを呼び出すと、結果が返されたときにトリガーされるデリゲート _completed イベントがあります。その間、私たちは道を進みます。

以下に貼り付けた Java Android コードは、クラウド サーバーで HTTP サービスを呼び出す方法です。Android の世界でサービスを呼び出す方法を教える Android チュートリアルを実行して、このコードを開発しました。どうやら、ここでのサービス呼び出しは同期であるため、結果が返されるまで InputStream in... で始まる命令は実行されません。

これは、Androidで動作するはずの方法ですか?サービスが応答しない場合は、数分間待機した後、タイムアウト例外が発生します。それは良くないね。すべてがハングアップします。

Androidでサービスを呼び出す推奨方法は何ですか? ありがとう、ゲイリー

    public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    HttpURLConnection urlConnection = null;

        try 
        {
            URL url = new URL("http://www.deanblakely.com/REST/api/products");
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());     
            String myString = readStream(in);
            String otherString = myString;
            otherString = otherString + " ";
        } 
        catch (MalformedURLException e) 
        {
            e.printStackTrace();
        } 
        catch (IOException e) 
        {   
            e.printStackTrace();
        }  

        finally 
        {     
            urlConnection.disconnect();   
        } 
}       
4

1 に答える 1

2

これは、Androidで動作するはずの方法ですか?

はい。によって提供されるものなど、バックグラウンド スレッドで HTTP 操作を実行しますAsyncTask

サービスが応答しない場合は、数分間待機した後、タイムアウト例外が発生します。それは良くないね。すべてがハングアップします。

ソケットのタイムアウトを「数分」より短く設定できます。たとえば、 を呼び出しsetReadTimeout()HttpURLConnectionタイムアウト期間をミリ秒単位で指定できます。

于 2012-09-16T23:24:42.690 に答える