按2次back鍵退出app

目前基本上大部分應(yīng)用都有這種功能,點(diǎn)擊返回鍵第一次會(huì)提示用戶,如果在2S內(nèi)點(diǎn)擊了第二次才會(huì)退出。

方法一:通過使用handler的延遲操作2s實(shí)現(xiàn)目的
//是否退出的標(biāo)記:默認(rèn)false,不退出
    private boolean isExit = false;

    /**
     * 點(diǎn)擊2次退出app
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && !isExit) {//判斷是否為返回鍵和是否退出
            //提示用戶
            ToastUtils.showShort("再按一次返回鍵退出app");
            //設(shè)置標(biāo)記
            isExit = true;

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //延時(shí)2s之后將退出標(biāo)記重置
                    isExit = false;
                }
            }, 2000);

            //返回true,將事件消費(fèi)。
            return true;
        }
        //如果上述條件不成立,則會(huì)執(zhí)行正常的返回操作。
        return super.onKeyDown(keyCode, event);
    } 

上面的代碼也可以修改為:if條件OK時(shí),handler發(fā)送一條延時(shí)2S消息,在handlerMessage里面設(shè)置條件繼續(xù)滿足。

方法二:通過判斷2次back的時(shí)間差,判斷是否退出

記錄上次點(diǎn)擊的時(shí)間,與本次點(diǎn)擊的時(shí)間比較,當(dāng)兩次時(shí)間間隔小于一定值時(shí),退出,否則提示“再按一次退出程序”,同時(shí)更新上次點(diǎn)擊時(shí)間。

//上一次按back的時(shí)間
    private long lastBackTime = 0;

    /**
     * 點(diǎn)擊2次退出app
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
            //當(dāng)去點(diǎn)擊back按鍵時(shí)候的時(shí)間
            long currentBackTime = System.currentTimeMillis();
            //當(dāng)間隔大于2s的時(shí)候
            if (currentBackTime - lastBackTime > 2000) {
                ToastUtils.showShort("再按一次返回鍵退出app");
                //時(shí)間重新賦值
                lastBackTime = currentBackTime;
            } else {
                finish();
            }
            //將事件消費(fèi)
            return true;
        }
        //如果上述條件不成立,則會(huì)執(zhí)行正常的返回操作。
        return super.onKeyDown(keyCode, event);
    } 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,187評(píng)論 25 708
  • Activity是什么 Activity是四大組件之一,它提供一個(gè)界面讓用戶點(diǎn)擊和各種滑動(dòng)操作 Activity棧...
    叫我吹神閱讀 2,873評(píng)論 0 4
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,362評(píng)論 0 17
  • 綠柳趕紅魚,亭閣倒水中。 游人行橋上,夢(mèng)往湖里存。 ——珠峰仰坐
    珠峰仰坐閱讀 144評(píng)論 0 2
  • 這本書是清華大學(xué)經(jīng)管學(xué)院的教授寫的,大多數(shù)是他博客的合集,對(duì)各個(gè)社會(huì)事件的評(píng)論。前言里他說道對(duì)社會(huì)事件的評(píng)論有三種...
    哇620閱讀 260評(píng)論 0 1

友情鏈接更多精彩內(nèi)容