Jakenです。
一年ぶりぐらいの投稿になります。
変な時間に目が冴えてしまったので、眠たい事言ってたらゴメンナサイ。
※先に念を押しますが、zakiさんの言う設計が正しいです。
イベントドリブンな設計にしたほうが、よっぽど分かりやすくなります。
また、内容が難しいと感じるようなら、以下には浅い理解で手を出さない方が「吉」です。
zakiさんはご存知だけど「あえて答えなかった」ぐらいの内容じゃないかと思います。
Mar Hiroさんがやりたい事は、条件付きではありますが、他の方法で実現可能です。
それは、Thread/Lock/Conditionを使った方法です。CountDownLatchなんてのもありますね。
ただし、メインスレッドで長時間待機(5秒かな)すると、ANRの可能性も出てくるので、
出来るだけ待機処理は別スレッドで行わなければなりません。
テストプログラムで、メインスレッドで待機しても軽い処理なら動作することは確認してます。
ですが、この使い方は正直ちょっと怖いです・・・。
出来れば、待機処理を含む「順次処理を行わなければならない部分」を
ごっそり全部「別スレッド」にして、終わったらHandlerでpostするような
仕組みにした方がよいでしょう。(あれ、やっぱりイベントドリブンにw)
キャンセル処理が必要なほど、時間がかかる処理なら、
やっぱりzakiさんが紹介された方法になると思います。
SQL文見た感じだと、UserID1件の取得っぽいし、大丈夫かな?
まあ、非推奨だけど「こんな方法もあるよ」という事で。
それでは、頑張ってください(^^