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中都要加入第二段代码。

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

时间: 2024-10-11 23:15:33

Android 按两次返回键完全退出程序的相关文章

android 按两次返回键退出

我们可以在很多应用中都能看到按两次返回键退出 , 其实这个功能实现很容易, 下面就是实现的代码 , 把它放到你的程序中你的程序就能按两次返回键退出啦  , 这个功能是为了避免误点而把程序退出了 ,给你的程序也加上这个简单实用的功能把 : package com.xuchao.test; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget

Android按两次返回键退出应用

最近工作比较忙,所以只好在周末写点博客了,呵呵.在3年的Android工作中积累了不少经验,我会慢慢把我在工作遇到的经验写给大家!好了,现在就先贴一段代码,是关于按两次返回键退出应用的实战代码! private static long exitTime = 0; public static void onBackPressedAgain(Activity paramActivity) { Log.i(TAG, "onBackPressedAgain " + paramActivity.

android 按两次返回键退出应用

private long mExitTime; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //设置回退 if ((System.currentTimeMillis() - mExitTime) > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHOR

Android onKeyDown 两次返回键退出

long preTime;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { long currentTime = new Date().getTime(); // 如果时间间隔大于2秒,不处理 if ((currentTime - preTime) > 2000) { // 显示消息 Toast.makeText(this, "再按

安卓---连续点击两次返回键退出程序---二级界面的退出程序

法一:实现方式,通过记录按键时间计算时间差实现: import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.Toast; public class MainActivity extends Activity { private long exitTime = 0; @Override protected void onCreate(Bundl

android实现点击两次返回键实现退出功能

在使用android平台的app是我们经常会发现点击两次返回键会提示是否退出的功能,下面讲讲此功能是如何实现的(此方法比较简单) 第一种方法是对系统返回键进行监听,定义一个变量记录按键时间,通过计算时间差来实现该功能,代码如下: //退出时的时间private long mExitTime;//对返回键进行监听@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCO

Android实现点击两次返回键退出

在做android应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序. 原理: 监听back键的按下,需要重写onKeyDown()方法,判断两次按下的时差,如果小于2秒,就退出,反之亦然. 第一种: package com.example.appexitdemo; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import a

android按2次返回键退出程序的代码

在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序.方法很多种,这里通过记录按键时间计算时间差实现: import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.Toast; public class MainActivity extends Activity { pri

【转】Android实现点击两次返回键退出

在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序. 第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法. 在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在 Handler中将此值还原成false.如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此