Android 处理异步任务中的连接超时
我有个问题还没有解决,我需要帮助 我制作了一个有时连接到web服务以获取数据的应用程序,我使用异步任务来实现这一点 当用户可以选择是重试还是取消时,我想在连接超时时创建一个警报对话框,如果用户选择重试,它将再次尝试连接 问题是,我不知道应该将警报对话框以及重试和取消的方法放在哪里 我想让asynctask等待用户输入或直到他们选择重试或取消 我尝试使用Android 处理异步任务中的连接超时,android,android-asynctask,Android,Android Asynctask,我有个问题还没有解决,我需要帮助 我制作了一个有时连接到web服务以获取数据的应用程序,我使用异步任务来实现这一点 当用户可以选择是重试还是取消时,我想在连接超时时创建一个警报对话框,如果用户选择重试,它将再次尝试连接 问题是,我不知道应该将警报对话框以及重试和取消的方法放在哪里 我想让asynctask等待用户输入或直到他们选择重试或取消 我尝试使用runOnUiThread进入doinbackground,但警报对话框不会出现,我尝试使用publishProgress()并在onProgre
runOnUiThread
进入doinbackground,但警报对话框不会出现,我尝试使用publishProgress()
并在onProgressUpdate
中显示警报对话框,警报对话框会出现,但异步任务仍在继续。如果我使用wait或notify,它会在等待之前给我错误对象未被线程锁定
除了加入onPostExecute之外,还有什么方法可以实现这一点吗
谢谢你
在onpreexecute中启动progressdialog,并在onpostexecute和if中停止
u在doinbackgroung中以任何原因获取响应null,然后显示警报
在onpostexecute中,从警报对话框操作再次调用asyntask
用这个
String host = "122.000.135.000";
int timeOut = 3000; // I recommend 3 seconds at least
boolean status;
try {
System.out.println("SERVER IS third");
status = InetAddress.getByName(host).isReachable(timeOut);
if(status == true)
{
System.out.println("SERVER IS "+status);
String UName = libertyID.getText().toString();
String Passwrd = password.getText().toString();
callAlertDialog();
sendPostRequest(UName,Passwrd);
//加密密码();
}只需将您的代码放在这个try/catch中,找到“异常类型”,并根据该类型显示您的对话框
try
{
int timeout = 3000;
URL myURL = //some valid URL
AndroidHttpClient = AndroidHttpClient.newInstance("name");
HttpGet httpGet = new HttpGet(myURL.toExternalForm());
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, timeout);
HttpConnectionParams.setSoTimeout(httpParams, timeout);
HttpResponse response = httpClient.execute(httpGet);
//...
}
catch (SocketTimeoutException e)
{
e.printStackTrace();
}
catch (ConnectTimeoutException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
Y不在执行后。从doinbackground返回一个特定值,并签入onpostexecute以抛出对话框