有谁知道如何处理ConnectTimeoutException?我正在使用AsyncTask将变量发布到网址,但我的互联网连接令人震惊,所以我因为ConnectTimeoutException而收到空数据。什么是处理这个问题的最佳方法,例如,如果超时发生再次尝试运行等我之前没有遇到过这个问题,所以不知道如何处理,但我觉得需要处理来改善用户体验。所以任何想法?
答案 0 :(得分:0)
您可以使用Handler让Activity
知道您有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;
}