91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android實現雙擊返回鍵退出應用實現方法詳解

發布時間:2020-09-08 07:04:43 來源:腳本之家 閱讀:563 作者:Greathfs 欄目:移動開發

前言

現在市面上很多應用都會有當用戶按返回鍵的時候提示用戶:再按一次將退出應用的提示,也就是雙擊雙擊返回鍵退出應用,接下來我們就用幾種辦法來實現這個功能

效果圖

Android實現雙擊返回鍵退出應用實現方法詳解

實現

第一種辦法

響應Activity的 onKeyUp事件,兩次點擊時間大于2秒鐘就不響應,小于2秒鐘就退出程序
代碼:

//記錄用戶首次點擊返回鍵的時間
 private long firstTime = 0;

 /**
  * 第一種解決辦法 通過監聽keyUp
  * @param keyCode
  * @param event
  * @return
  */
 @Override
 public boolean onKeyUp(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
   long secondTime = System.currentTimeMillis();
   if (secondTime - firstTime > 2000) {
    Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    firstTime = secondTime;
    return true;
   } else {
    System.exit(0);
   }
  }

  return super.onKeyUp(keyCode, event);
 }

第二種辦法

和第一種辦法一樣,這不過這次響應onKeyDown事件
代碼:

 /**
  * 第二種辦法
  * @param keyCode
  * @param event
  * @return
  */
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
   long secondTime = System.currentTimeMillis();
   if (secondTime - firstTime > 2000) {
    Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    firstTime = secondTime;
    return true;
   } else {
    System.exit(0);
   }
  }
  return super.onKeyDown(keyCode, event);
 }

第三種辦法

直接重寫onBackPressed()方法
代碼:

 /**
  * 第三種方法
  */
 @Override
 public void onBackPressed() {
  long secondTime = System.currentTimeMillis();
  if (secondTime - firstTime > 2000) {
   Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
   firstTime = secondTime;
  } else {
   System.exit(0);
  }

第四種辦法

通過線程延時的辦法實現,借助Timer
代碼:

/**
  * 第四種方法
  */
 @Override
 public void onBackPressed() {
  if (!mBackKeyPressed) {
   Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
   mBackKeyPressed = true;
   new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
     mBackKeyPressed = false;
    }
   }, 2000);
  } else {
   this.finish();
   System.exit(0);
  }
 }

第五種辦法

在onKeyUp()方法內使用Timer

  /**
  * 第五種辦法
  * @param keyCode
  * @param event
  * @return
  */
 @Override
 public boolean onKeyUp(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
   if (!mBackKeyPressed) {
    Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    mBackKeyPressed = true;
    new Timer().schedule(new TimerTask() {
     @Override
     public void run() {
      mBackKeyPressed = false;
     }
    }, 2000);
    return true;
   } else {
    this.finish();
    System.exit(0);
   }
  }
  return super.onKeyUp(keyCode, event);
 }

第六種辦法

在onKeyDown()方法內使用Timer

 /**
  * 第六種辦法
  * @param keyCode
  * @param event
  * @return
  */
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
   if (!mBackKeyPressed) {
    Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    mBackKeyPressed = true;
    new Timer().schedule(new TimerTask() {
     @Override
     public void run() {
      mBackKeyPressed = false;
     }
    }, 2000);
    return true;
   } else {
    this.finish();
    System.exit(0);
   }
  }
  return super.onKeyDown(keyCode, event);
 }

OK,到此就結束了,原理都差不多。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗江县| 陆川县| 桂林市| 灵山县| 上饶市| 靖州| 宜昌市| 澄迈县| 渝北区| 潼关县| 巢湖市| 临泽县| 莱阳市| 泸溪县| 乌什县| 故城县| 潍坊市| 新津县| 碌曲县| 新郑市| 治县。| 得荣县| 达州市| 桐梓县| 大埔县| 株洲县| 如东县| 庄河市| 五家渠市| 璧山县| 德兴市| 北京市| 玛曲县| 莆田市| 庆阳市| 柯坪县| 咸丰县| 榆中县| 海盐县| 舟曲县| 乐东|