Last active
January 4, 2016 08:43
-
-
Save Limuyang1013/b6e9a3ddea229faa8923 to your computer and use it in GitHub Desktop.
Android 单击两次返回键退出程序
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<span style="font-size:14px;">package com.test.twiceexit; | |
import java.util.Timer; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.os.Message; | |
import android.view.KeyEvent; | |
import android.view.Menu; | |
import android.widget.Toast; | |
public class MainActivity extends Activity { | |
private static Boolean isQuit = false; | |
private long mExitTime = 0; | |
Timer timer = new Timer(); | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.main, menu); | |
return true; | |
} | |
/************************************************** | |
* First | |
* ************************************************/ | |
@Override | |
public boolean onKeyDown(int keyCode, KeyEvent event) { | |
if (keyCode == KeyEvent.KEYCODE_BACK) { | |
if (isQuit == false) { | |
isQuit = true; | |
Toast.makeText(getBaseContext(), "再按一次返回键退出程序", | |
Toast.LENGTH_SHORT).show(); | |
TimerTask task = null; | |
task = new TimerTask() { | |
public void run() { | |
isQuit = false; | |
} | |
}; | |
timer.schedule(task, 2000); | |
} else { | |
finish(); | |
System.exit(0); | |
} | |
} | |
return false; | |
} | |
/************************************************** | |
* Second | |
* ************************************************/ | |
@Override | |
public boolean onKeyDown(int keyCode, KeyEvent event) { | |
if (keyCode == KeyEvent.KEYCODE_BACK) { | |
if ((System.currentTimeMillis() - mExitTime) > 2000) {// | |
// 如果两次按键时间间隔大于2000毫秒,则不退出 | |
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); | |
mExitTime = System.currentTimeMillis();// 更新mExitTime | |
} else { | |
System.exit(0);// 否则退出程序 | |
} | |
return true; | |
} | |
return super.onKeyDown(keyCode, event); | |
} | |
/************************************************** | |
* Third | |
* ************************************************/ | |
Handler mHandler = new Handler() { | |
@Override | |
public void handleMessage(Message msg) { | |
super.handleMessage(msg); | |
isQuit = false; | |
} | |
}; | |
@Override | |
public boolean onKeyDown(int keyCode, KeyEvent event) { | |
if (keyCode == KeyEvent.KEYCODE_BACK) { | |
if (!isQuit) { | |
isQuit = true; | |
Toast.makeText(getApplicationContext(), "再按一次退出程序", | |
Toast.LENGTH_SHORT).show(); | |
// 利用handler延迟发送更改状态信息 | |
mHandler.sendEmptyMessageDelayed(0, 2000); | |
} else { | |
finish(); | |
System.exit(0); | |
} | |
} | |
return false; | |
} | |
} | |
</span> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment