Wie können Sie einen Fortschrittsdialog läuft nicht mehr, wenn Netzwerkzugriff fällt?

StackOverflow https://stackoverflow.com/questions/4367936

  •  09-10-2019
  •  | 
  •  

Frage

Ich habe eine Anwendung, die für die Verarbeitung zu greifen XML auf eine Website geht. Dieser Prozess ist in einem separaten Thread und funktioniert gut, wenn ich 3G oder WiFi zur Verfügung haben. Ich habe auch Code, der überprüft das Signal, bevor sie tatsächlich den Faden, so dass es nicht versuchen wird, mit keine Verbindung .

Während meiner Tests ging ich in ein Gebäude, das alle Signal blockiert, so der Prozess gestartet, während ich draußen war und hatte Signal, aber wenn ich innerhalb des Signals ging fallen gelassen und mein Fortschritt dialog nur in Betrieb gehalten, ich musste das Programm manuell heruntergefahren, um es zu gewinnen.

Gibt es ein guter Weg, damit umzugehen, ohne dass der Benutzer manuell die App heruntergefahren, wenn diese Situation passiert?

War es hilfreich?

Lösung

Supply timeout parameters to your HttpClientand catch SocketTimeOutException

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();
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top