1

処理のためにXMLを取得するためにWebサイトにアクセスするアプリがあります。このプロセスは別のスレッドにあり、3GまたはWiFiを利用できる場合は正常に機能します。また、実際にスレッドを実行する前にシグナルをチェックするコードがあるので、接続がないと試行されません。

テスト中、すべての信号をブロックしている建物に足を踏み入れたため、外に出て信号を受信して​​いるときにプロセスが開始されましたが、信号が落ちて進行状況ダイアログが実行され続けると、プログラムを手動でシャットダウンして取得する必要がありました。それを回復します。

このような状況が発生した場合にユーザーがアプリを手動でシャットダウンしなくても、これに対処する良い方法はありますか?

4

1 に答える 1

3

にタイムアウトパラメータを指定し、HttpClientSocketTimeOutExceptionをキャッチします

HttpParams httpParams=new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
HttpClient httpClient=new DefaultHttpClient(httpParams);
try {
    httpClient.execute(new HttpGet("http://myserver.xml"));
}
    catch(SocketTimeoutException ex){
        //Perform Timeout i.e. cancle progress dialog
    }
    catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2010-12-06T15:53:12.490 に答える