重写返回键,一次退出应用程序

在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 中都写了。







你可能感兴趣的:(重写返回键,一次退出应用程序)