Androidプログラミングコラム第2回です。多分

今回は、Androidでユーザーに処理を待ってもらうために出すProgressDialogについて取上げます。

ProgressDialogについて

ProgressDialogは、結構前から非推奨(Deprecated)となっています。にも関わらず、私も含め多くのアプリでこのProgressDialogを見かけます。おそらく、実装が楽なんでしょうね。何も考えず表示すればいいだけなので。

通常、Deprecatedになるものといえば、代替の仕組みやメソッド、定数などが出来たり、サポート外になったものなどですよね。しかし、ProgressDialogがDeprecatedとなっている理由は少し変わっています。

ProgressDialogがDeprecatedとなっている理由

っていうか、非推奨である理由は明記するための仕組み(Javadoc)がちゃんとあるので、普通に見ることができます。

そこには、こういう記載が。

ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instead of using this class, you should use a progress indicator like ProgressBar, which can be embedded in your app’s UI. Alternatively, you can use a notification to inform the user of the task’s progress.

(訳:ProgressDialogはモーダルダイアログであり、ユーザーのアプリ操作を妨げます。このクラスを使うのではなく、ProgressBarのようなUIに埋め込めるプログレスインジケータを使用するべきです。あるいは、タスクの進行状況を知らせるためにNotificationを使うこともできます。)

https://developer.android.com/reference/android/app/ProgressDialog

要するに、ProgressDialogが表示されている間はユーザーが何も出来なくなり、UXが低下するということです。あなたも、「間違えてタップしちゃったけどProgressDialogが邪魔で読み込み終わるまで前の画面に戻れない」なんて経験があるでしょう。そういうことを引き起こすので、GoogleとしてはなるべくProgressDialogは使わせたくないようです。

つまりは、ProgressDialogの代替を自力で作らなければならない訳ではなく、ProgressDialogの概念自体が非推奨ということです。

そこを少し勘違いした投稿を見つけたので記事を書きました。ProgressDialogを表示させるのはユーザーに操作をさせたくない時だけにしましょう。進行状況を表示したい際も、少し面倒でもProgressBarをUIに直接埋め込むようにしましょう。

コメントを残す

メールアドレスが公開されることはありません。