Androidプログラミングコラム第2回です。多分
今回は、Androidでユーザーに処理を待ってもらうために出すProgressDialogについて取上げます。
Table of Contents
- ProgressDialogについて
- ProgressDialogがDeprecatedとなっている理由
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](https://developer.android.com/reference/android/widget/ProgressBar.html)
, 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に直接埋め込むようにしましょう。