Android 优雅地退出App

原创文章,如有转载,请注明出处:http://blog.csdn.net/myth13141314/article/details/64920258

主要用到了Activity的启动模式,简单有效, 只需要2步

  • 设置MainActivity的启动模式为SingleTask
  • 将退出出口放在MainActivity

原理分析

Activity的四种启动模式

  • standard:标准模式,每次启动都会创建一个实例
  • singleTop:栈顶复用模式,如果在栈顶就调用onNewIntent复用,从onResume()开始,否则创建新的实例
  • singleTask:栈内复用,本栈内只要用该类型Activity就会调到栈顶复用,从onResume()开始,并将其之上的所有Activity移除栈
  • singleInstance:单例模式,除了singleTask的特性,系统会单独给该Activity创建一个栈

我们打开一个App一般都是经过启动页,然后finish启动页跳转到MainActivity,然后再经过一系列的跳转,期间会产生数量不定的Activity,有的被销毁,有的驻留在栈中,但是栈底永远是我们的MainActivity。将MainActivity的启动模式为SingleTask,退出的出口设置在MainActivity,这样一来,用户要退出App时,肯定要回到MainActivity,此时栈里面就只有MainActivity,直接finish退出即可。


最后附上双击退出App的一种实现

//双击退出程序
private static boolean isExit = false;
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

    if(keyCode==KeyEvent.KEYCODE_BACK){

        if(!isExit){
            isExit = true;
            Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
            new CountDownTimer(2200,2200){

                @Override
                public void onTick(long millisUntilFinished) {
                }

                @Override
                public void onFinish() {
                    isExit = false;
                }
            }.start();
        }else{
            finish();
        }

        return false;
    }

    return super.onKeyUp(keyCode, event);
}


欢迎关注我的公众号,和我一起每天进步一点点!
Android 优雅地退出App_第1张图片

你可能感兴趣的:(Android)