天天看點

Android 再按一次退出程式三種辦法

在Xamarin android中輕按兩下傳回鍵退出程式的第一種做法

思路就是當使用者按下傳回鍵的時間超過兩秒就退出,根據Keycode.Back判斷使用者按下的是傳回鍵,重寫這個OnKeyDown

DateTime? firstTime;
        public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
        {
            if (keyCode == Keycode.Back && e.Action == KeyEventActions.Down)//判斷點選的是傳回鍵,并且動作是Down按下
            {
                if (!firstTime.HasValue || DateTime.Now.Second - firstTime.Value.Second > 2)
                {
                    Toast.MakeText(this, "再按一次退出", ToastLength.Short).Show();
                    firstTime = DateTime.Now;
                }
                else
                {
                    Finish();//退出應用程式
                }
                return true;
            }
            return base.OnKeyDown(keyCode,e);
        }      

在Xamarin android中輕按兩下傳回鍵退出程式的第二種做法

思路就是使用.net的定時器對象Timer,當按下傳回鍵 timer啟動,兩秒之内再次按下傳回鍵isExit為true,直接退出程式。

<pre name="code" class="csharp">  public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
        {
            if (keyCode == Keycode.Back && e.Action == KeyEventActions.Down)
            {
                ExitWidthTimer();
                return true;
            }
            return base.OnKeyDown(keyCode,e);
        }
        private void ExitWidthTimer()
        {
            bool isExit = false;
            Timer time_timer = null; //注意這裡使用的用的.net的Timer對象
            if (!isExit)
            {
                isExit = true;
                Toast.MakeText(this, "再按一次退出", ToastLength.Short).Show();
                time_timer = new Timer();
                time_timer.Interval = 2000;
                time_timer.Enabled = true;

                //定時的2000毫秒到了isExis為true,退出app
                time_timer.Elapsed +=delegate{
                    isExit = false;
                };
            }
            else
            {
                Finish();
            }
        }      

android中輕按兩下退出程式的第三種方法暫時還沒想出來,差不多就是利用以上兩種方法來實作,代碼很簡單,關鍵還是要知道怎麼寫的。ok,如果你有還有更好的寫法和實作方式也可以告訴我哦!不要問為什麼老是兩秒鐘,一般的程式都是兩秒,仿佛也是業内預設的一樣的

繼續閱讀