0

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 を表示させるにはどうすればよいでしょうか?

ありがとう!

4

1 に答える 1

1

pd.show()前にする必要があるreturnValue=doSomeDifficultCalculationsHere();

于 2013-11-13T11:31:46.923 に答える