随着progressdialog崩溃运行

时间:2013-01-09 15:11:17

标签: progressdialog runnable

以下代码是错误的来源。我想要的是在loginDialog1成立后调出loginRedirectCheck。但是,应用程序崩溃,而不是显示progressDialog。我做错了吗?我该如何解决?谢谢。

Runnable myRunnable = new Runnable() {
    @Override
    public void run() {
        while(loginCheck){
            if(loginRedirectCheck){
                loginCheck = false;
                new Handler().post(new Runnable() {
                    @Override
                    public void run() {
                        loginDialog1.show();
                    }
                });
            }
        }
    }
};

Thread myThread = new Thread(myRunnable);
myThread.start();

1 个答案:

答案 0 :(得分:0)

  

我做错了吗?

是的,您正在新线程中创建Handler。这会导致在那里执行发布的Runnables,导致在新线程中执行loginDialog1.show();,但我想它必须在UI-Thread中执行。

  

我该如何解决?

在UI-Thread中创建处理程序(例如,作为包含myThrad.start()的对象的实例变量)和post()您的runnable到该处理程序而不是新创建的处理程序。

编辑:

我认为在你的情况下,最终的局部变量会很好:

final Handler myHandler = new Handler();

Runnable myRunnable = new Runnable() {
 [...]
                loginCheck = false;
                myHandler.post(new Runnable() {
                    @Override
 [...]