2013-03-01 4 views
0

Est-ce que quelqu'un sait comment gérer un ConnectTimeoutException? Je poste des variables dans une URL en utilisant AsyncTask mais ma connexion internet est choquante, donc je reçois des données nulles en raison d'une exception ConnectTimeoutException. Quelles sont les meilleures façons de gérer cela par exemple, si le temps se produit, essayez de courir à nouveau etc je n'ai pas eu ce problème avant donc ne pas la moindre idée de la façon de gérer, mais je pense qu'il a besoin de manipuler pour améliorer l'expérience utilisateur. donc des idées?Comment gérer ConnectTimeoutException Android

Répondre

0

Vous pouvez utiliser un Handler pour laisser votre Activity savez que vous avez un ConnectTimeoutException

Catch cette exception dans votre AsyncTask et d'envoyer un message à votre Handler (puis faites ce que vous voulez)

Pour information, AsyncTask ne sont pas conçus pour une longue opération en cours d'exécution, le cas échéant, vous devez utiliser un Thread

0

voici comment vous shoud vérifier l'état du réseau

ConnectivityManager connMgr = (ConnectivityManager) 
       getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
      if (networkInfo != null && networkInfo.isConnected()) { 
       //execute your AsyncTask method 
      } else { 

       //maketoast..."No network connection available" 
      } 
+0

Pour votre information, ce code est de [ici] (http://developer.android.com/training/basics/network -ops/connecting.html) si vous voulez plus d'informations – Eliud

0

Faire une classe distincte, appelée aide d'activité, et mettre en œuvre dans votre tâche async pour toutes les classes que vous faites dans ce qui nécessite un appel webservice.

public class ActivityHelper { 
    public static final String NETWORK_CONNECTION_MESSAGE = "No Network Connection. Please make sure you have a Network Connection."; 


public static boolean isNetworkPresent(Context applicationContext){ 
    boolean hasService = false; 
    NetworkInfo info=(NetworkInfo)((ConnectivityManager)applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 
    hasService = (info==null || !info.isConnected())?false:true; 
    return hasService; 

} 
} 

appel Helper d'activité dans "doInBackground" Méthode un peu comme ça ..

private class YourAsyncTask extends AsyncTask<String, Void, String> { 
     Message message = new Message(); 
    String type = ""; 
    protected void onPreExecute() { 
     ActivityHelper.onUserInteraction(getApplicationContext()); 
     dialog = ProgressDialog.show(LocationType.this, 
       "Connecting to server", "Please wait...", true, true); 
     dialog.setCancelable(false); 
    } 
protected String doInBackground(final String... args) { 
     try { 

      if(!ActivityHelper.isNetworkPresent(getApplicationContext())){ 
       message.what = ActivityHelper.NONETWORKCONNECTION; 
       return null; 
      } 
} catch (Exception e) { 
      Log.e(this.getClass().getName(), 
        "Exception Message"); 
     } 
     return null; 
    } 
Questions connexes