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のソースコードにあった物を切りだしたものです。
コメント
コメントを投稿