Toastが固まる現象への対策
ToastはViewに一定時間メッセージを表示するのに使用します。
ユーザーの入力でToastを表示するようにしたところ、困った現象が発生しました。
イベントが連続で発生すると、Toastが固まって消えなくようです。
ボタンが連打されても、最後にボタンがクリックされた後はToast.LENGTH_SHORTのDurationの時間経過で消えてもらわないと困ります。
Toastは1つのインスタンスを使いまわすようにしないといけません。
リスナクラスを以下のようにすれば、望みの結果が得られます。
private class ListenerButtonView
implements OnClickListener
{
private Toast t;
public ListenerButtonView()
{
t = Toast.makeText(ToastTest.this, "表示されました", Toast.LENGTH_SHORT);
}
public void onClick(View v)
{
Cancel();
t.show();
}
private void Cancel()
{
if (t != null) {
t.cancel();
}
}
}
}
Toastの表示終了のタイミングは分からないので、表示の際は常に後始末をしておいた方が良さそうです。