【发布时间】:2013-11-30 18:11:55
【问题描述】:
我有一些代码 a) 需要大约 10..20 秒来执行 b) 返回一个用于进一步处理的值 c) 由用户通过 UI 操作调用
因此我创建了这样的程序结构:
ProgressDialog pd = new ProgressDialog(ctx);
pd.setCancelable(false);
pd.setCanceledOnTouchOutside(false);
pd.setTitle(ctx.getResources().getText(R.string.progress));
pd.setMessage(ctx.getResources().getText(R.string.wait_keygen));
pd.setIndeterminate(true);
pd.show();
returnValue=doSomeDifficultCalculationsHere();
pd.dismiss();
现在我的问题是:进度对话框没有显示,它似乎也被阻塞的 doSomeDifficultCalculationsHere() 函数阻塞了。
当我将 doSomeDifficultCalculationsHere() 放入自己的线程并执行 Thread.join() 以等待此函数的结果时,由于 Thread.join() 阻塞,因此也不会显示进度对话。
当我将 ProgressDialog 放入线程时,我得到一个异常。
那么,当我无法真正异步调用 doSomeDifficultCalculationsHere() 因为后续所有步骤都需要它的结果时,我还能如何解决这个问题并让 ProgressDialog 显示?
谢谢!
【问题讨论】:
-
您希望您的用户盯着
ProgressDialog20-30 秒?您可能需要重新考虑...
标签: android multithreading progressdialog