N2-Works
WEB企画・制作/システム開発 大阪拠点

Toastが固まる現象への対策

ToastはViewに一定時間メッセージを表示するのに使用します。

ユーザーの入力でToastを表示するようにしたところ、困った現象が発生しました。

イベントが連続で発生すると、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の表示終了のタイミングは分からないので、表示の際は常に後始末をしておいた方が良さそうです。

[Android]2011年01月18日 15時31分02秒

※1000文字以内で入力してください

captcha
TOP