新建一個類DoubleClickExitHelper.javajava
public class DoubleClickExitHelper { private final Activity mActivity; private boolean isOnKeyBacking; private Handler mHandler; private Toast mBackToast; public DoubleClickExitHelper(Activity activity) { mActivity = activity;//保存傳進來的activity mHandler = new Handler(Looper.getMainLooper());//生成一個handler,去管理消息隊列 } /** * Activity onKeyDown事件 * */ public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode != KeyEvent.KEYCODE_BACK) { return false; } if (isOnKeyBacking) { mHandler.removeCallbacks(onBackTimeRunnable);//移除消息隊列 if (mBackToast != null) { mBackToast.cancel(); } // 退出 mActivity.finish(); return true; } else { isOnKeyBacking = true;//注意,首先執行這裏,由於isOnKeyBacking剛開始是false if (mBackToast == null) { mBackToast = Toast.makeText(mActivity, R.string.back_exit_tips, 2000); } mBackToast.show(); mHandler.postDelayed(onBackTimeRunnable, 2000);//加入消息隊列, 2000ms以後執行 return true; } } // 2000ms以後執行, 把isOnKeyBacking設置成false private Runnable onBackTimeRunnable = new Runnable() { @Override public void run() { isOnKeyBacking = false; if (mBackToast != null) { mBackToast.cancel(); } } }; }
而後在主界面裏面調用ide
Main.javaoop
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 雙擊返回鍵退出 mDoubleClickExitHelper = new DoubleClickExitHelper(this); } /** * 監聽返回--是否退出程序 */ public boolean onKeyDown(int keyCode, KeyEvent event) { boolean flag = true; if (keyCode == KeyEvent.KEYCODE_BACK) { // 是否退出應用 return mDoubleClickExitHelper.onKeyDown(keyCode, event); } else if (keyCode == KeyEvent.KEYCODE_MENU) { // 其餘 } else if (keyCode == KeyEvent.KEYCODE_SEARCH) { // 其餘 } else { // 其餘 } return flag; }
OK, 這樣就能夠實現了post