Come si può fermare una finestra di avanzamento in esecuzione quando scende l'accesso alla rete?

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

  •  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?

È stato utile?

Soluzione

parametri di timeout fornire al vostro pescato HttpClientand 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();
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top