码迷,mamicode.com
首页 > 移动开发 > 详细

Android实现点击两次返回键退出

时间:2015-04-16 12:32:25      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:android

在做android应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。

原理:

监听back键的按下,需要重写onKeyDown()方法,判断两次按下的时差,如果小于2秒,就退出,反之亦然。


第一种:

package com.example.appexitdemo;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
 private long exitTime = 0;
   
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
   exitByTime();
   return false;
  }
  return super.onKeyDown(keyCode, event);
 }
 public void exitByTime() {
  if ((System.currentTimeMillis() - exitTime) > 2000) {
   Toast.makeText(getApplicationContext(), "再按一次退出程序",
     Toast.LENGTH_SHORT).show();
   exitTime = System.currentTimeMillis();
  } else {
   finish();
   System.exit(0);
  }
 }
 
}

第二种:

package com.example.appexitdemo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }
 // 定义一个变量,来标识是否退出
    private static boolean isExit = false;
   
    Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            isExit = false;
        }
    };
   
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK) {
   exit();
   return false;
  }
  return super.onKeyDown(keyCode, event);
 }
 
 private void exit() {
        if (!isExit) {
            isExit = true;
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            // 利用handler延迟发送更改状态信息
            mHandler.sendEmptyMessageDelayed(0, 2000);
        } else {
            finish();
            System.exit(0);
        }
    }
}

下载地址

Android实现点击两次返回键退出

标签:android

原文地址:http://blog.csdn.net/kun5069073/article/details/45071969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!