2回クリックして現在のプログラムを終了
2回クリックして現在のプログラムを終了
実装原理:onKeyDown()は現在のクリックイベントをキャプチャし、現在のkeyCodeがBACKイベント値に等しい場合はToQuitTheApp()メソッドを実行します.ToQuitTheApp()メソッドでは、まずisExitの値を判断し、falseであればtrueとし、同時にプロンプトがポップアップされ、3000ミリ秒(3秒)後にメッセージが発行され、Handlerでメッセージを受信してisExit値をfalseに復元する.メッセージ送信間隔の3秒以内にBACKキーを再度押した場合、再度exitメソッドが実行され、isExitの値がtrueになった場合、プログラムを終了するメソッドが実行されます.
実装原理:onKeyDown()は現在のクリックイベントをキャプチャし、現在のkeyCodeがBACKイベント値に等しい場合はToQuitTheApp()メソッドを実行します.ToQuitTheApp()メソッドでは、まずisExitの値を判断し、falseであればtrueとし、同時にプロンプトがポップアップされ、3000ミリ秒(3秒)後にメッセージが発行され、Handlerでメッセージを受信してisExit値をfalseに復元する.メッセージ送信間隔の3秒以内にBACKキーを再度押した場合、再度exitメソッドが実行され、isExitの値がtrueになった場合、プログラムを終了するメソッドが実行されます.
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);
isExit = false;
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;
}
};
}