如何处理ConnectTimeoutException Android

时间:2013-03-01 14:37:17

标签: java android

有谁知道如何处理ConnectTimeoutException?我正在使用AsyncTask将变量发布到网址,但我的互联网连接令人震惊,所以我因为ConnectTimeoutException而收到空数据。什么是处理这个问题的最佳方法,例如,如果超时发生再次尝试运行等我之前没有遇到过这个问题,所以不知道如何处理,但我觉得需要处理来改善用户体验。所以任何想法?

3 个答案:

答案 0 :(得分:0)

您可以使用HandlerActivity知道您有ConnectTimeoutException

在AsyncTask中捕获此异常并向Handler发送消息(然后随意执行)

仅供参考,AsyncTask不适用于长时间运行操作,如果是这样,您应该使用Thread

答案 1 :(得分:0)

这是您应该检查网络状态的方法

 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"
            }

答案 2 :(得分:0)

创建一个名为Activity helper的独立类,并在异步任务中为您需要进行Web服务调用的任何类实现它。

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;

}
}

在“doInBackground”方法中调用Activity Helper就像这样..

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;
    }