【Android】ProgressDialogがDeprecatedになっている理由、正しく理解してます?

公開 2020-01-03 / 最終更新 2021-05-05 12:07
カテゴリー Androidアプリ

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](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に直接埋め込むようにしましょう。

コメント
コメントする

※ニックネームの変更はCookieを削除することで行えます。(ただし、過去に書き込んだコメントの編集・削除はできなくなります。)

コメント本文

※reCAPTCHAによるボット判定を行っているため、送信に少々時間がかかる場合があります。ご了承ください。

送信しました。

確認

コメントを削除しますか?

返信

返信を入力

arrow_upward