【问题标题】:Progress dialog not displayed in android?android中不显示进度对话框?
【发布时间】:2011-05-13 12:29:23
【问题描述】:

我在点击 Web 服务时使用进度对话框并等待来自 Web 服务的响应,一旦我得到响应,我就会关闭进度对话框。这是我使用的代码,

      dialog= ProgressDialog.show(Settings.this, "","Synchronisation with  server...", false);
      request = new SoapObject(NAMESPACE, METHOD_NAME);
      envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
      androidHttpTransport = new AndroidHttpTransport(URL);

      request.addProperty("mtest","1");


      envelope.setOutputSoapObject(request);
          try
          {
              System.gc();
              androidHttpTransport.call(SOAP_ACTION, envelope);
              SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;


              }
              }

              dialog.dismiss();
          }
          catch (Exception aE)
          {
              aE.printStackTrace ();;
          }

但没有显示进度,如果我发送请求时连接了 Web 服务,则应用程序似乎处于空闲状态并且在收到响应之前没有显示任何进度,我需要显示一些进度。

如果未连接网络服务,则会显示进度,但我们无法手动关闭它。 我需要在点击 Web 服务时显示进度指示,无论是作为单独的进度还是作为标题本身的一部分。有谁知道请帮帮我。

谢谢。

【问题讨论】:

    标签: android progressdialog


    【解决方案1】:

    尝试使用 Handler 将远程调用包装到辅助线程或使用 AsyncTask 来完成工作。

    原因是,当您执行 ProgressDialog.Show 时,它会在下一次更新中安排显示(在 UI 线程中),这与您连接 Web 服务的线程相同;因此,它永远没有机会这样做,因为您的 Web 服务正在持有 UI 线程。

    【讨论】:

      【解决方案2】:

      很多人都面临这个问题,即使我也面临同样的问题。最好的解决方案是使用异步任务。听到的是sample code。可能对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多