在android 中,默认的返回键是退回到上一个保留的activity处。如何通过返回键,一次退出多个activity,直接退出应用程序。简单的思路就是:新建一个类,继承Application, 将所有创建的activivty 放到一个list中,在类中添加两个方法,一个addActivity(),用于添加activity到 list 中,一个是exit();用于退出应用程序。
Activity 管理类代码:
public class SysApp extends Application { ArrayList<Activity> mylist = new ArrayList<Activity>();//放置创建的Activity private static SysApp instance; public SysApp() { } public static SysApp getInstance() { if(null == instance){ instance = new SysApp(); } return instance; } // add activity to mylist public void addActivity(Activity activity){ mylist.add(activity); } public void exit(){ try { for(Activity activity: mylist){ activity.finish(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ System.exit(0); } } @Override public void onLowMemory() { super.onLowMemory(); System.gc(); }
创建 3 个activity 分别是MainActivity,BActivity ,CActivity,在CActivity 中重写返回键,直接退出app
CActivity 的代码如下:
//监听返回键,重写 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(event.getKeyCode()==KeyEvent.KEYCODE_BACK){ // return true;//返回真是,返回键被屏蔽掉 creatDialog();//创建弹出的Dialog } return super.onKeyDown(keyCode, event); } private void creatDialog(){ Builder builder = new AlertDialog.Builder(this); builder.setMessage("确定退出app?"); builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SysApp.getInstance().exit();//退出app---- } }); builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }); builder.create().show(); }
这样,就可以一次退出多个activity了。
当然,这个方法还可以优化,可以让所有的activity都继承一个CommonActivity ,在这个activity中 调用addActivity()方法,监听返回键,这样就不必在每个activity 中都写了。