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