読者です 読者をやめる 読者になる 読者になる

kojiko-android’s blog

開発中にハマった時の解決策や、忘れがちなことを残しておきます。

最後にボタンを押してから数秒後に一回だけ処理をする

最後にボタンを押してから数秒後に一回だけ処理をする方法です。

たとえばフローティングアクションボタン(FAB)を設置していて、
ユーザーが何かをしているときはFABは隠しておき、操作が終わった後にちょっと間を置いて再び表示したいときなどに。

private Handler handler;

    //    Handlerのインスタンスをフィールドに宣言

private void doSomethingLater(){

    if (handler != null) {
        handler.removeCallbacksAndMessages(null);

        //    既に予定があればそれはキャンセルする

    }

    handler = new Handler();

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            Toast.makeText(getApplicationContext(),"HELLO!",Toast.LENGTH_SHORT).show();

        }
    },3000l);    //    処理を予約します
}

doSomethingLater()を呼び出してから3秒後にトーストを表示します。
トーストが出る前に、再度 doSomethingLater() が呼ばれた場合は、
そこから3秒後に初めてトーストを表示します。