按两次返回键退出程序:
public class Exit {
[java] view plain copy
- private boolean isExit = false;
- private Runnable task = new Runnable() {
- @Override
- public void run() {
- isExit = false;
- }
- };
- public void doExitInOneSecond() {
- isExit = true;
- HandlerThread thread = new HandlerThread("doTask");
- thread.start();
- new Handler(thread.getLooper()).postDelayed(task, 1000);
- }
- public boolean isExit() {
- return isExit;
- }
- public void setExit(boolean isExit) {
- this.isExit = isExit;
- }
Activity:
[java] view plain copy
- public class Back2FinishAppActivity extends Activity {
- Exit exit = new Exit();
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- pressAgainExit();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- private void pressAgainExit() {
- if (exit.isExit()) {
- finish();
- } else {
- Toast.makeText(getApplicationContext(), "再按一次退出程序",
- Toast.LENGTH_SHORT).show();
- exit.doExitInOneSecond();
- }
- }
- }
长按返回键退出程序:
[java] view plain copy
- public boolean dispatchKeyEvent(KeyEvent event)
- {
- int keyCode=event.getKeyCode();
- switch(keyCode)
- {
- case KeyEvent.KEYCODE_BACK: {
- if(event.isLongPress())
- {
- this.stopService(intent);
- System.exit(0);
- return true;
- }else
- {
- return false;
- }
- }
- }
- return super.dispatchKeyEvent(event);
- }