我试图在用户界面上显示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);
}
}
});
}
答案 0 :(得分:4)
你有这个
MainActivity.this.runOnUiThread(new Runnable()
然后
Thread.sleep(1000);
你正在ui线程上调用sleep。这会阻止你不应该做的ui线程。你会得到ANR。
http://developer.android.com/training/articles/perf-anr.html
如果您想延迟使用handler