码迷,mamicode.com
首页 > 移动开发 > 详细

Android 按两次返回键完全退出程序

时间:2015-08-06 11:11:56      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:android 按两次返回键 结束进程


现在几乎所有的应用程序都有按两个返回键退出应用程序的功能,最开始的时候以为只要使用一句finish(),就可以实现此功能,后来发现这个只是销毁掉当前页面,并没有退出程序,进程还是在后台运行。后来,使用System.exit(0),此方法的功能是结束进程,结果还是不行。后来经过查找,终于找到了一个比较好的方法可以去实现这个功能。此方法的原理为把所有Activity加入到一个链表集合里,当按两次返回键时,先是销毁掉所有Activity,再掉用System.exit(0);具体代码如下

1.先写一个MyApplication

private List<Activity> mList = new LinkedList<Activity>();
	private static MyApplication instance;

	

	public synchronized static MyApplication getInstance() {
		if (null == instance) {
			instance = new MyApplication();
		}
		return instance;
	}

	//调用此方法把当前的Acitivyt加入到mList这个集合里
	public void addActivity(Activity activity) {
		mList.add(activity);
	}

	//调用退出方法时,先是把不为空的Activity都销毁掉,然后再退出应用程序 
	public void exit() {
		try {
			for (Activity activity : mList) {
				if (activity != null)
					activity.finish();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			System.exit(0);
			
		}
	}

2.然后在每一个你写的Activity里加入这行代码,把当前Activity加入到集合中去

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		MyApplication.getInstance().addActivity(this);
		setContentView(R.layout.activity_about_mth);}



3,当按两次返回键时,调用exit();

/**
	 * 按两次返回键退出应用
	 * */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == event.KEYCODE_BACK) {
			if (System.currentTimeMillis() - time > 2000) {
				Toast.makeText(MainActivity.this, "再按一次退出", 0).show();
				time = System.currentTimeMillis();
			} else {
				MyApplication.getInstance().exit();
				;
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

到此,整个功能就已经完成了,在每个Activity中都要加入第二段代码。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 按两次返回键完全退出程序

标签:android 按两次返回键 结束进程

原文地址:http://blog.csdn.net/xiaoxiaomao123098/article/details/47312569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!