我有一些代码 a)需要大约10..20秒才能执行 b)返回用于进一步处理的值 c)由用户调用
因此我创建了一个这样的结构:
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);
returnValue=doSomeDifficultCalculationsHere();
pd.dismiss();
现在我的问题是:进度对话框没有显示,似乎被阻止的doSomeDifficultCalculationsHere() - 函数阻止了。
当我将doSomeDifficultCalculationsHere()放入自己的线程并执行Thread.join()以等待此函数的结果时,也不会显示进度对话框,因为Thread.join()会阻塞。
当我将ProgressDialog放入线程时,我得到一个异常。
那么我怎么能解决这个问题呢?当我无法真正异步调用doSomeDifficultCalculationsHere()时,让我显示ProgressDialog,因为以下所有步骤都需要它的结果?
谢谢!
答案 0 :(得分:1)
您需要在pd.show()
returnValue=doSomeDifficultCalculationsHere();