一、使用系统Back键实现退出应用
Android的系统Back键是应用退出的常用方式,通过重写Activity的onBackPressed()方法可以实现在Back键按下时退出应用。
@Override public void onBackPressed() { moveTaskToBack(true); super.onBackPressed(); }
这里调用了moveTaskToBack(true)使应用进入后台,而后调用super.onBackPressed()正常将应用退出。需要注意的是,如果在Activity跳转时不会调用onBackPressed()方法,如果需要在此时退出应用,需在跳转代码中添加finish()方法。
二、使用系统Home键实现退出应用
实现使用系统Home键退出应用的方式相对简单,只需在退出应用前调用System.exit(0)方法即可,但不建议使用该方法,因为其方式过于粗暴。
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_HOME){ System.exit(0);//退出应用 return true; } return super.onKeyDown(keyCode, event); }
三、利用广播机制实现退出应用
通过应用内自定义广播,在接收到广播时退出应用,相对于前两种方法,该方法更加安全可控。
首先在Mainfest文件中注册广播接收器:
<receiver android:name=".ExitReceiver"> <intent-filter> <action android:name="exit_app" /> </intent-filter> </receiver>
然后定义广播接收器,实现退出应用的操作:
public class ExitReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction().equals("exit_app")){ ((Activity)context).finish(); } } }
最后,在需要退出应用的地方发送该广播:
Intent intent = new Intent("exit_app"); sendBroadcast(intent);
四、使用Dialog确认退出应用
为避免用户误操作,可在退出应用前使用Dialog提示用户,让用户确认是否退出应用。
首先定义Dialog,代码如下:
private void showExitDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示") .setMessage("是否退出应用?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finishAll(); } }) .setNegativeButton("取消", null) .create() .show(); }
然后在需要退出应用的地方调用该Dialog即可:
showExitDialog();
需要注意的是,finishAll()方法是在BaseActivity中自定义实现的,用于结束所有Activity。
五、结合双击Back键实现退出应用
为提供更加灵活的退出方式,可考虑结合双击Back键实现退出应用。
首先需要定义变量记录点击的时间:
private long mExitTime = 0;
然后在onBackPressed()方法中判断时间是否超过2秒,如果超过则重置mExitTime,否则退出应用:
@Override public void onBackPressed() { if((System.currentTimeMillis() - mExitTime) > 2000){ Toast.makeText(this, "再按一次退出应用", Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); } else{ finishAll(); } }
六、总结
本文分别介绍了五种Android退出应用的实现方式,分别是使用系统Back键、使用系统Home键、利用广播机制、使用Dialog确认、结合双击Back键。每种方式都有各自的优缺点,根据应用实际情况选择适合的方式。