Come si può fermare una finestra di avanzamento in esecuzione quando scende l'accesso alla rete?
-
09-10-2019 - |
Domanda
Ho un app che esce a un sito web in XML afferrare per l'elaborazione. Questo processo è in un thread separato e funziona bene quando ho 3G o WiFi disponibili. Ho anche il codice che controlli segnale prima di eseguirlo il filo in modo che non tenterà con alcuna connettività .
Durante la mia prova, ho camminato in un edificio che ha bloccato tutti i segnali in modo che il processo è iniziato, mentre ero fuori e aveva segnale, ma quando sono andato dentro il segnale è sceso e il mio Progress dialogo semplicemente continuato a correre, ho dovuto chiudere manualmente il basso programma per farlo recuperare.
C'è un buon modo per affrontare questo senza che l'utente debba arrestare manualmente l'applicazione se questa situazione si verifica?
Soluzione
parametri di timeout fornire al vostro pescato HttpClient
and 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();
}