QA@IT

Android Buttonクリック時のバックグラウンド処理について

2876 PV

初歩的な質問なのですが、よろしくお願いいたします。

AndroidでButtonをクリックした時に、時間のかかる処理であれば
バックグラウンドProgressDialogを表示し処理すると思うのですが

ほんの少しだけ時間がかかる処理の場合、
バックグラウンドでProgressDialogを表示してもすぐに消えてしまいます。

何も表示しないと「アレ?」と感じ、ProgressDialogを表示しても「え?今の何?」といった感じです。
処理的には以下のようなものです。
DBに1件データを取得する。
DBにデータを1件登録する。
WebAPIからデータを1件取得する。

PCのようにカーソルが砂時計になるといった具合だとちょうど良いのですが・・・
イチイチProgressDialogを表示するのであれば、ボタンをクリックした時の処理は
すべてバックグラウンドで処理することになりますよね・・・

どうするのが良いのでしょうか?

回答

AsyncTaskでバックグラウンド処理を行うからといって、必ずしもProgressDialogを出す必要は無いですね。
見せ方は幾つかあると思いますが、自分ならば以下のようにするかと思います。
# WebAPI呼び出しと違ってDB入出力はコストが読めるので、同期処理でやっちゃうのも一つの手とは思いますが

DBから1件データを取得する

取得したデータを表示する箇所にProgressBarのandroid:attr/progressBarStyleを表示(onPreExecute)
取得完了したらデータを表示してProgressBarをフェードアウト(onPostExecute)

DBに1件データを登録する

登録ボタンを押した時点で全入力欄、ボタンを無効化
登録ボタンの上にProgressBarのandroid:attr/progressBarStyleを表示(onPreExecute)
(ボタン押下直後なので視線はここにあるはず)
登録完了したら登録完了画面に遷移(onPostExecute)

WebAPIから1件データを取得する

DBから取得する場合と同じ。ただ、DBと違って長時間かかる可能性があるので、キャンセル/リトライ処理はしっかりと。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。