Autore Topic: Controllo connessione internet durante download dati  (Letto 739 volte)

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Controllo connessione internet durante download dati
« il: 14 Maggio 2013, 01:21:36 CEST »
0
Ciao ragazzi,
come da titolo vorrei effettuare un controllo continua della connessione internet durante il download dei dati da alcuni siti per evitare dei crash come questo:

Codice (Java): [Seleziona]
05-14 01:16:24.460: E/AndroidRuntime(8142): FATAL EXCEPTION: main
05-14 01:16:24.460: E/AndroidRuntime(8142): java.lang.NullPointerException
05-14 01:16:24.460: E/AndroidRuntime(8142):     at com.areu.CustomAdapter$5.onPostExecute(CustomAdapter.java:128)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at com.areu.CustomAdapter$5.onPostExecute(CustomAdapter.java:1)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.os.AsyncTask.finish(AsyncTask.java:631)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.os.Looper.loop(Looper.java:137)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at android.app.ActivityThread.main(ActivityThread.java:4898)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at java.lang.reflect.Method.invokeNative(Native Method)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at java.lang.reflect.Method.invoke(Method.java:511)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-14 01:16:24.460: E/AndroidRuntime(8142):     at dalvik.system.NativeStart.main(Native Method)

Per il download utilizzo questo codice:
Codice (Java): [Seleziona]
public class RequestTask extends AsyncTask<String, String, String>{
       

    @Override
    protected String doInBackground(String... uri) {
       
        HttpClient httpclient = new DefaultHttpClient();
       
        HttpResponse response;
        String responseString = null;
        try {
            response = httpclient.execute(new HttpGet(uri[0]));
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                response.getEntity().writeTo(out);
                out.close();
                responseString = out.toString();
            } else{
                //Closes the connection.
                response.getEntity().getContent().close();
                throw new IOException(statusLine.getReasonPhrase());
            }
        } catch (ClientProtocolException e) {
            //TODO Handle problems..
        } catch (IOException e) {
            //TODO Handle problems..
        }
        return responseString;
    }

}

Per gestire la risposta invece
Codice (Java): [Seleziona]
new RequestTask(){
                                protected void onPostExecute(String result) {}
}.execute(url);

La linea che crasha è nel onPostExecute quando tento di utilizzare result...
Prima di far partire questo thread faccio ovviamente un controllo della connessione internet.
Qualcuno ha qualche soluzione??

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Controllo connessione internet durante download dati
« Risposta #1 il: 14 Maggio 2013, 08:14:09 CEST »
0
Controllare la connessione non ti evita il crash. Per evitare il crash devi gestire l'eccezione nullpointerexception o prevenirla.

La linea che crasha è nel onPostExecute quando tento di utilizzare result...

Puoi postare il codice della onPostExecute evidenziando la riga che genera l'eccezione?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Controllo connessione internet durante download dati
« Risposta #2 il: 14 Maggio 2013, 09:51:48 CEST »
0
Guarda in questo momento non riesco a postartelo ma ti posso dire che comunque questo codice lo utilizzo per riempire una listview e per "aggiungere" maggiori dettagli a ogni singola riga.
L'errore lo dà generalmente nel CustomAdapter al primo utilizzo di result che mi sembra sia uno split...

Stamattina in coda per andare al lavoro mi è venuta una illuminazione...potrei fare test se result è diverso da null per evitare che venga utilizzato in caso di errore nel download.

Vi terrò aggiornati  :D

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Controllo connessione internet durante download dati
« Risposta #3 il: 16 Maggio 2013, 23:38:57 CEST »
0
Ragazzi vi confermo che ho risolto mettendo il controllo result!=null