我使用访问HTTP服务的代码来接收登录数据,在此之前,我试图显示一个处理对话框,但它没有显示出来。然后我尝试简单地更改按钮标签以告诉用户等待数据返回,但它也不起作用。那是我的代码:
tryingToLoginDialog = ProgressDialog.show(this, "Por Favor Aguarde", "Efetuando Login...", true);
btn_Entrar.setText("Wait while logins...");
btn_Entrar.invalidate();
App.webService.Login(txtLogin.getText().toString(), txtSenha.getText().toString());
String LoginUserData = App.webService.getUserData(); /* this method freezes the app but do not crash it cause ThreadPolicy permit all*/
/* here some if's */
tryingToLoginDialog.dismiss();
btn_Entrar.setText("Login");
btn_Entrar.invalidate();
答案 0 :(得分:0)
你应该使用AsynTask。这有4种不同的方法doInBackground()
此方法在后台运行(不在UI线程中)在您的情况下,您可以在此处执行网络工作,其他三种方法是onProgressUpdate()
,onPostExecute()
和{{在UI线程中运行因此您可以使用这些函数来更新GUI。
您说要显示对话框,以便在onPreExecute()
中设置progressdialog并在onPreExecute()
中执行冻结,并根据您的需要使用其他方法。
详见here