【Android Demo】点击两次Back键退出当前程序

应用场景:点击两次Back键退出当前程序

效果图:

【Android Demo】点击两次Back键退出当前程序

实现原理:onKeyDown()会捕获当前点击事件,如果当前keyCode等于BACK事件值就会执行ToQuitTheApp()方法。在ToQuitTheApp()方法中,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在3000毫秒(3秒)后发出一个消息,在Handler中接收到消息后将isExit值还原成false。如果在发送消息间隔的3秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出程序的方法。

主要代码:

package com.yc.toquitapp;



import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.view.KeyEvent;

import android.widget.Toast;



public class MainActivity extends Activity {



    private boolean isExit = false;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        // ClickTwiceBackToQuit



    }



    // 重写Activity中onKeyDown()方法

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {// 当keyCode等于退出事件值时

            ToQuitTheApp();

            return false;

        } else {

            return super.onKeyDown(keyCode, event);

        }

    }



    //封装ToQuitTheApp方法

    private void ToQuitTheApp() {

        if (isExit) {

            // ACTION_MAIN with category CATEGORY_HOME 启动主屏幕

            Intent intent = new Intent(Intent.ACTION_MAIN);

            intent.addCategory(Intent.CATEGORY_HOME);

            startActivity(intent);

            System.exit(0);// 使虚拟机停止运行并退出程序

        } else {

            isExit = true;

            Toast.makeText(MainActivity.this, "再按一次退出APP", Toast.LENGTH_SHORT).show();

            mHandler.sendEmptyMessageDelayed(0, 3000);// 3秒后发送消息

        }

    }



    //创建Handler对象,用来处理消息

    Handler mHandler = new Handler() {



        @Override

        public void handleMessage(Message msg) {//处理消息

            // TODO Auto-generated method stub

            super.handleMessage(msg);

            isExit = false;

        }

    };

}

 

源代码下载

  

来源:http://www.cnblogs.com/renqingping/archive/2012/09/28/TwoTimesBack.html

 

你可能感兴趣的:(android)