Android Progress DialogBox没有显示?

时间:2013-09-11 13:26:25

标签: android android-progressbar android-location

我试图在用户界面上显示ProgressDialog五秒钟以阻止用户界面,以便我的locationClient可以在五秒后连接。

我正在关闭对话框。但是对话框根本没有显示,移动屏幕变黑了3-4秒。是不是因为我在UiThread上运行了这段代码?如果是他们的任何其他方法,我可以遵循停止5秒然后执行挂起的代码。

我的线程代码如下:

public void startConnecting(final boolean isSearchWarnings) {
        mProgressDialog = ProgressDialog.show(this, "Please wait","Long operation starts...", true);
        MainActivity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i <= 5; i++) {
                    try {
                        if (mLocationClient.isConnected()) {
                            break;

                        } else {
                            Thread.sleep(1000);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
                mProgressDialog.dismiss();
                if (isSearchWarnings) {
                    new getWarnings().execute(false);
                } else {
                    new getWarnings().execute(true);
                }
            }
        });

    }

1 个答案:

答案 0 :(得分:4)

你有这个

   MainActivity.this.runOnUiThread(new Runnable()

然后

   Thread.sleep(1000);

你正在ui线程上调用sleep。这会阻止你不应该做的ui线程。你会得到ANR。

http://developer.android.com/training/articles/perf-anr.html

如果您想延迟使用handler

give a delay of few seconds without using threads