原创文章,如有转载,请注明出处: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);
}
欢迎关注我的公众号,和我一起每天进步一点点!