现在几乎所有的应用程序都有按两个返回键退出应用程序的功能,最开始的时候以为只要使用一句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);
}
}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);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/xiaoxiaomao123098/article/details/47312569