如何在重度冻结方法之前更新View?

时间:2014-06-02 18:17:14

标签: android view screen lag

我使用访问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();

1 个答案:

答案 0 :(得分:0)

你应该使用AsynTask。这有4种不同的方法doInBackground()此方法在后台运行(不在UI线程中)在您的情况下,您可以在此处执行网络工作,其他三种方法是onProgressUpdate()onPostExecute()和{{在UI线程中运行因此您可以使用这些函数来更新GUI。

您说要显示对话框,以便在onPreExecute()中设置progressdialog并在onPreExecute()中执行冻结,并根据您的需要使用其他方法。

详见here