标签:
新建一个类DoubleClickExitHelper.java
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(); } } }; }
然后在主界面里面调用
Main.java
@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, 这样就可以实现了
标签:
原文地址:http://my.oschina.net/u/1377657/blog/405256