您的位置:首页 > 移动开发

Android 优雅地退出App

2017-03-22 15:40 232 查看
原创文章,如有转载,请注明出处: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 退出