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);
}


欢迎关注我的公众号,和我一起每天进步一点点!
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值