ProgressDialog 没有显示,即使我正在为任务使用线程
ProgressDialog is not showing even I am using a Thread for the task
我有这个(在 onCreate() 方法中):
private ProgressDialog pDialog; //(this is in the header)
.
.
.
//This is onCreate() method
pDialog=new ProgressDialog(MenuActivity.this);
pDialog.setMessage(getString(R.string.downloading));
pDialog.setCancelable(false);
...some lines of code...
pDialog.show();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
resultados=timeConsumingTask();
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(resultados.contains(1)){
if(pDialog!=null){
if(pDialog.isShowing()){
pDialog.dismiss();
}
}
doSomething();
}else{
if(pDialog!=null){
if(pDialog.isShowing()){
pDialog.dismiss();
}
}
doOtherThing();
{
我查看了 SO 上的每个教程和每个答案。他们每个人都说你必须做 pDialog.show();就在耗时的任务之前,但显然我遗漏了一些东西,因为 pDialog 从未显示过。
你能帮我展示它,并在 if 中关闭它吗?
谢谢。
编辑:
可能与我调用 show() 方法以及 FloatingActionButton 的 onClick() 方法中的所有内容有关)
如果 UI 在某些地方被阻塞,则不会显示对话框。
第 thread.join();
行阻塞了您的 UI 线程。
尝试使用 AsyncTask 而不是 Thread 并将线程终止后要执行的代码放在 AsyncTask.onPostExecute() 上。
要呈现任何 UI 部分 activity OnCreate() 函数调用必须是 finished/completed。
由于您试图通过同一功能显示和隐藏进度对话框,因此它不会产生在屏幕上显示的效果。
此外,通过执行 thread.join(),您可以阻止阻止 OnCreate() 完成并导致在 onCreate()
中显示和隐藏进度对话框的主要威胁
解决方案:尝试在没有 thread.join() 的线程上执行 timeConsumingTask() 并使用 runOnUiThread() 方法从线程本身隐藏 progressDialog
我有这个(在 onCreate() 方法中):
private ProgressDialog pDialog; //(this is in the header)
.
.
.
//This is onCreate() method
pDialog=new ProgressDialog(MenuActivity.this);
pDialog.setMessage(getString(R.string.downloading));
pDialog.setCancelable(false);
...some lines of code...
pDialog.show();
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
resultados=timeConsumingTask();
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
if(resultados.contains(1)){
if(pDialog!=null){
if(pDialog.isShowing()){
pDialog.dismiss();
}
}
doSomething();
}else{
if(pDialog!=null){
if(pDialog.isShowing()){
pDialog.dismiss();
}
}
doOtherThing();
{
我查看了 SO 上的每个教程和每个答案。他们每个人都说你必须做 pDialog.show();就在耗时的任务之前,但显然我遗漏了一些东西,因为 pDialog 从未显示过。
你能帮我展示它,并在 if 中关闭它吗?
谢谢。
编辑:
可能与我调用 show() 方法以及 FloatingActionButton 的 onClick() 方法中的所有内容有关)
如果 UI 在某些地方被阻塞,则不会显示对话框。
第 thread.join();
行阻塞了您的 UI 线程。
尝试使用 AsyncTask 而不是 Thread 并将线程终止后要执行的代码放在 AsyncTask.onPostExecute() 上。
要呈现任何 UI 部分 activity OnCreate() 函数调用必须是 finished/completed。
由于您试图通过同一功能显示和隐藏进度对话框,因此它不会产生在屏幕上显示的效果。
此外,通过执行 thread.join(),您可以阻止阻止 OnCreate() 完成并导致在 onCreate()
中显示和隐藏进度对话框的主要威胁解决方案:尝试在没有 thread.join() 的线程上执行 timeConsumingTask() 并使用 runOnUiThread() 方法从线程本身隐藏 progressDialog