AsyncTask を呼び出して終了したかどうかを確認するために実行するメソッドからブール値を返したいと考えています。以前は .get() メソッドを呼び出しましたが (これは問題ありませんでした)、これによりすべてのスレッドが停止し、進行状況ダイアログが必要です。
100msごとにスリープ/待機し、getStatus()をチェックしてStatus.FINISHEDと等しいかどうかを確認するforループのアイデアをいじっていますが、これは悪い考えのようです。
以下はコードの一部です。
jData.theTask.execute(url); if(jData.theTask.getStatus() == AsyncTask.Status.FINISHED) { if(!WebService.webServiceValid()) { showMessage(); return false; } return true; } Log.d("fired", "false fired"); return false;
操作はすぐには完了しないため、false が返されるだけで、操作が完了していないために競合状態が発生しています。上記のように、for ループでラップして定期的に x 回チェックすることもできますが、おそらくもっと良い解決策があると思います。
どうもありがとう
編集:
.execute() を呼び出してから .get() を呼び出すと、.get(long timeout, TimeUnit timeUnit) からのブール値を待っている間に、UI が進行状況ダイアログ ボックスを実際に生成できるようです。これは私の問題の解決策ですが、これに関して誰かがコメントした場合に備えて、明日まで質問を開いたままにします.