Android Toastが固まるのを回避する方法

Androidには、Toastという機能がある。これは簡単なメッセージをユーザーに表示するだけの機能である。ユーザが見逃す可能性もあるので、重要なメッセージの表示には使用できないが、Nofificationとの併用や、何かを削除した時に削除終了をユーザに明確に伝える時に使用する。

android.widget.Toast

表示する時間は、長く表示と、短く表示が用意されている。
Androidのソースコードを見ていると、ほとんどのアプリケーションが、LENGTH_SHORTを使用しているが、個人的に読み取れない事が多いので、LENGTH_LONGを使用している。

  • LENGTH_LONG
  • LENGTH_SHORT (Default)

使い方は、非常に簡単で、以下の1行で画面に表示をさせる事ができるため、通常のメッセージ表示のほかに、Broadcastのテスト等に使用すると便利である。

Toast.makeText(this, R.string.short_notification_text,Toast.LENGTH_SHORT).show();

Toastが固まる時

SDKを見てもらうと、Toast.cancel()が存在する。ほっておけばすぐに消えてしまうToastにわざわざこのようなメソッドが腰囲されている理由は、Toastを表示している間にもう一度Toastを表示してはいけないということである。

マルチスレッド化したプログラムで各スレッドから、画面に報告用のToastを表示すると、タイミングによっては、Toastを2回呼んでしまう可能性がある。

このような時は、以下のようなToastMasterクラスを作成して使用すれば良い

public class ToastMaster extends Toast{private static Toast sToast = null;public ToastMaster(Context context) {super(context);}@Overridepublic void show() {ToastMaster.setToast(this);super.show();}public static void setToast(Toast toast) {if (sToast != null)sToast.cancel();sToast = toast;}public static void cancelToast() {if (sToast != null)sToast.cancel();sToast = null;}}

使用する時

ToastMaster.makeText(this, text, ToastMaster.LENGTH_SHORT).show();

このソースは、Androidのソースコードにあった物を切りだしたものです。


コメント

このブログの人気の投稿

島へ移住の話【炊飯】

ドローンプログラミング体験教室を伊豆大島の小学校でしてきました

情報処理安全確保支援士登録証のカード型が届きました。