现在几乎所有的应用程序都有按两个返回键退出应用程序的功能,最开始的时候以为只要使用一句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