【问题标题】:Handle connection timeout in async task处理异步任务中的连接超时
【发布时间】:2013-10-18 19:53:28
【问题描述】:

我有一个问题还没有解决,我需要帮助

我制作了一个有时会连接到网络服务以获取数据的应用,我使用异步任务来完成此操作

当用户可以选择是否要重试或取消时,我想在连接超时时发出警报对话框,如果他们选择重试,它将再次尝试连接

问题是,我不知道应该把警报对话框放在哪里,以及重试和取消的方法

我想让 asynctask 等待用户输入或直到他们选择重试或取消,

我尝试使用runOnUiThread 放入doinbackground,但不会出现警报对话框,我尝试使用publishProgress() 并在onProgressUpdate 中显示警报对话框,出现警报对话框但异步任务继续进行。如果我使用等待或通知它给了我错误object not locked by thread before wait

除了放在 onPostExecute 之外,还有什么方法可以实现吗?

感谢之前

【问题讨论】:

  • Y 不在执行后。从 doinbackground 返回一个特定值并签入 onpostexecute 以抛出对话框

标签: android android-asynctask


【解决方案1】:

只需将您的代码放入此 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();
}

【讨论】:

    【解决方案2】:

    在onpreexecute 中启动progressdialog 并在onpostexecute 时停止,如果 你在doinbackgroung中以任何原因得到响应为空,然后显示警报 在 onpostexecute 并从警报对话框操作再次调用 asyntask

    【讨论】:

      【解决方案3】:

      使用这个

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

      //加密密码(); }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多