0

I have some code that a) needs about 10..20 seconds to execute b) returns a value that is used for further processing c) is called by the user

Thus I created a structure like this:

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();

Now my problems is: the progress dialogue is not shown, it seems to be blocked by the blocking doSomeDifficultCalculationsHere()-function too.

When I place doSomeDifficultCalculationsHere() into an own thread and do a Thread.join() to wait for result of this function progress dialogue is also not shown because Thread.join() blocks.

When I put the ProgressDialog into the thread I get an exception.

So how else can I solve this problem and let the ProgressDialog be shown when I can't call doSomeDifficultCalculationsHere() really asynchronously because its result is needed for all following steps?

Thanks!

4

1 回答 1

1

你需要做pd.show()之前returnValue=doSomeDifficultCalculationsHere();

于 2013-11-13T11:31:46.923 回答