Android中的“再按一次返回键退出程序”实现
Android中的“再按一次返回键退出程序”实现
2013-06-12 22:40:03
最近在学习过程中想到了将应用程序与手机按键结合的实现,在网上看了一下,找到了一种——Android中的“再按一次返回键退出程序”实现。感觉不错,还比较有用,所以将这个方法记录了下来。
代码如下所示:
1 private long exitTime = 0; //设置的一个时间初值 2 3 @Override 4 public boolean onKeyDown(int keyCode, KeyEvent event) { 5 // TODO Auto-generated method stub 6 if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ 7 if((System.currentTimeMillis() - exitTime) > 2000){ //currentTimeMillis()---->获得系统当前的时间 8 Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); 9 exitTime = System.currentTimeMillis(); //将系统当前的时间赋值给exitTime 10 }else{ 11 finish(); 12 System.exit(0); 13 } 14 return true; 15 } 16 return super.onKeyDown(keyCode, event); 17 }
以上代码的实现为,当我们按返回键时会弹出一个Toast,提示”再按一次退出程序“。当用户再按一次返回键,并且两次按键的时间小于2s时退出程序。不过以上方法也存在着局限性,如果我们依次进入多个Activity,按返回键返回上一个Activity时也可能会出现退出的情况。为解决这一问题,可以使用如下方法:
1 if ((System.currentTimeMillis() - exitTime) > 2000) { 2 Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); 3 exitTime = System.currentTimeMillis(); 4 } else { 5 Intent exit = new Intent(Intent.ACTION_MAIN); //定位到MainActivity 6 exit.addCategory(Intent.CATEGORY_HOME); 7 exit.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 8 startActivity(exit); 9 System.exit(0); 10 }
注意:在代码中,我们可能会要实现通过点击一个Back键返回上一个activity的情况。如果aaActivity可以跳到bbActivity(有参数传递),ccActivity通过点击Back按钮也可以返回bbActivity(无参数传递),可能存在报空指针异常的情况。此时,只要在AndroidManifest.xml文件中对应的Activity声明中加入单例模式(android:launchMode="singleTask")就可以避免空指针异常

浙公网安备 33010602011771号