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

来源:互联网 发布:北风网的大数据怎样 编辑:程序博客网 时间:2024/06/04 23:23

第一种方法:

// 定义一个变量,来标识是否退出private static boolean isExit = false;Handler mHandler = new Handler() {    @Override    public void handleMessage(Message msg) {        super.handleMessage(msg);        isExit = false;    }};

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    }


@Overridepublic 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(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();        // 利用handler延迟发送更改状态信息        mHandler.sendEmptyMessageDelayed(0, 2000);    } else {        finish();        System.exit(0);        ActivityCollector.finishAll();    }}



}



第二种方法(根据点击的时间来判定):

public class MainActivity extends Activity {


    private long exitTime = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            exit();
            return false;
        }
        return super.onKeyDown(keyCode, event);
    }


    public void exit() {
        if ((System.currentTimeMillis() - exitTime) > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
            System.exit(0);
        }
    }


}

0 0