Android應用系列:雙擊返回鍵退出程序


前言

  有一個很古老的應用技巧,一直被各種大大小小的app用得樂此不疲,那就是雙擊返回鍵退出程序。今天就寫寫它的實現代碼,非常簡單而且實用。

正文

  雙擊返回鍵退出程序,一般有兩種實現思路,一種是用一個布爾值變量來記錄按鍵事件,並通過線程延時來實現效果;另外一種是直接通過記錄按鍵時間計算時間差實現功能,現在就跟大家分享下代碼吧、O(∩_∩)O哈哈~

1、利用線程延時實現

private static boolean mBackKeyPressed = false;//記錄是否有首次按鍵
    
@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);
  }
}

通過 mBackKeyPressed  來記錄是否有首次按返回鍵的記錄,如果不存在首次按鍵記錄,則Toast提示,並記錄首次按鍵記錄,並啟動線程在2秒后擦除該按鍵記錄。如果在線程海內擦除mBackKeyPressed 時又按下返回鍵,則執行else里面的語句退出程序。

2、通過計算時間差實現

private long mPressedTime = 0;
    
@Override
public void onBackPressed() {
  long mNowTime = System.currentTimeMillis();//獲取第一次按鍵時間
  if((mNowTime - mPressedTime) > 2000){//比較兩次按鍵時間差
    Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    mPressedTime = mNowTime;
  }
  else{//退出程序
    this.finish();
    System.exit(0);
  }
}

這里是通過控制時間差來實現功能的,在首次按下返回鍵時,將會將當期時間賦值給mPressedTime並通過Toast提示用戶,在第二次按下返回鍵時,如果與 mPressedTime記錄的時間差值大於2秒則重新刷新mPressedTime的時間,如果小於2秒則執行else的語句退出程序。

PS:個人比較建議用時間差的方式來實現這個功能,因為代碼的簡單與穩定性都比線程延時相對好很多。

 

如果有更好的實現方式,歡迎大家一起探討哈~

 

作者:enjoy風鈴
出處:http://www.cnblogs.com/net168/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則下次不給你轉載了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM