最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年09月17日 11:07:57   作者:Greathfs  
這篇文章主要為大家詳細介紹了Android實現雙擊返回鍵退出應用的實現方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

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

效果圖

實現

第一種辦法

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

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

 /**
  * 第一種解決辦法 通過監(jiān)聽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,到此就結束了,原理都差不多。

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

相關文章

  • Android開發(fā)之TabHost選項卡及相關疑難解決方法

    Android開發(fā)之TabHost選項卡及相關疑難解決方法

    這篇文章主要介紹了Android開發(fā)之TabHost選項卡及相關疑難解決方法,結合實例形式較為詳細的分析了Android開發(fā)中TabHost選項卡的常見用法以及相關疑難問題解決方法,需要的朋友可以參考下
    2019-03-03
  • Android開發(fā)登陸案例

    Android開發(fā)登陸案例

    這篇文章主要介紹了Android開發(fā)登陸案例的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • Android中使用開源框架Citypickerview實現省市區(qū)三級聯(lián)動選擇

    Android中使用開源框架Citypickerview實現省市區(qū)三級聯(lián)動選擇

    這篇文章主要介紹了Android中使用開源框架Citypickerview實現省市區(qū)三級聯(lián)動選擇效果,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • Android編程之TabWidget選項卡用法實例分析

    Android編程之TabWidget選項卡用法實例分析

    這篇文章主要介紹了Android編程之TabWidget選項卡用法,結合實例形式較為詳細的分析了TabWidget選項卡的具體實現技巧與使用注意事項,需要的朋友可以參考下
    2015-12-12
  • Android selector狀態(tài)選擇器的使用詳解

    Android selector狀態(tài)選擇器的使用詳解

    這篇文章主要為大家詳細介紹了Android selector狀態(tài)選擇器的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • android中sqlite的按條件查找的小例子

    android中sqlite的按條件查找的小例子

    android中內嵌輕量級數據庫sqlite,涉及到的操作無外乎增刪改查,今天就來說一說其中的查找操作,更多的時候我們用到的查找是要按條件查找的 例如表的結構如下:
    2013-06-06
  • 如何在Android中高效管理圖片加載

    如何在Android中高效管理圖片加載

    在Android應用中,優(yōu)化用戶體驗尤其是圖像加載極為重要,本文介紹了如何通過構建ImageCacheLoader類來實現圖片的緩存和網絡下載,包括從URL加載圖片、下載圖片、保存圖片到緩存和文件名提取等關鍵功能,本方法能有效提高應用響應速度,減少網絡流量
    2024-11-11
  • JS實現點擊參數面板按鈕顯示或隱藏數據

    JS實現點擊參數面板按鈕顯示或隱藏數據

    本文主要介紹JS實現點擊參數面板按鈕顯示或隱藏數據的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Android二維碼創(chuàng)建實例

    Android二維碼創(chuàng)建實例

    這篇文章主要介紹了Android二維碼創(chuàng)建實例的相關資料,需要的朋友可以參考下
    2017-04-04
  • Android中使用socket通信實現消息推送的方法詳解

    Android中使用socket通信實現消息推送的方法詳解

    這篇文章主要介紹了Android中使用socket通信實現消息推送的方法,文中舉了一個消息發(fā)送端和一個消息接收端以及服務器端的例子來說明原理并且展示了客戶端的實現,需要的朋友可以參考下
    2016-04-04

最新評論

灵璧县| 淳化县| 逊克县| 泰来县| 农安县| 新郑市| 江川县| 兴隆县| 海兴县| 新营市| 平阴县| 松潘县| 黑水县| 濮阳市| 辰溪县| 南充市| 宜阳县| 阿巴嘎旗| 剑河县| 湟中县| 获嘉县| 苏州市| 波密县| 达孜县| 漳浦县| 泊头市| 富源县| 宜春市| 宜兴市| 昌都县| 长兴县| 察雅县| 宜都市| 奉贤区| 桐梓县| 金山区| 仁怀市| 正镶白旗| 石棉县| 台南县| 东辽县|