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

來源:互聯網
上載者:User

標籤:

前言

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

本文

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

1、利用線程延時實現

private static boolean mBackKeyPressed = false;//記錄是否有首次按鍵    @Overridepublic 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;    @Overridepublic 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/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則下次不給你轉載了。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.