我在点击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服务,则会显示进度,但我们无法手动将其关闭。 我需要在点击Web服务时显示进度的指示,要么作为单独的进度,要么作为标题本身的一部分。如果有人知道请帮助我。
感谢。
答案 0 :(得分:1)
尝试使用Handler将远程调用包装到辅助线程,或使用AsyncTask进行工作。
原因是,当您执行ProgressDialog.Show时,它会在下一次更新(在UI线程中)安排该节目,这与您连接Web服务的线程相同;因此,由于您的Web服务持有UI线程,因此它永远不会有机会这样做。
答案 1 :(得分:0)
很多人都面临着这个问题,即使我也面临同样的问题。对此最好的解决方案是使用异步任务。听到的是sample code。它可能对你有帮助。