【Android Demo】點擊兩次Back鍵退出當前程序


應用場景:點擊兩次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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM