异步程序流程/显示ProgressDialog

时间:2013-11-13 11:30:44

标签: android multithreading progressdialog

我有一些代码 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,因为以下所有步骤都需要它的结果?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在pd.show()

之前returnValue=doSomeDifficultCalculationsHere();