测试的例子中有三个activity,启动顺序为SplashActivity-LoginActivity-MainActivity。点击APP图标重新启动程序,无法返回之前操作页面,这个现象在Realese版本出现,debug版本不出现。
https://github.com/qiantanlong/APPLaucherDemo
这个demo中验证了重新启动APP后的task任务栈的情况,有兴趣可以跑一下看看。
方法一:
在SplashActivity的onCreate方法中加入如下代码:建议使用这个
if (!this.isTaskRoot()) {
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
finish();
return;
}
}
}
意思是如果打开的SplashActivity不是当前任务栈的栈顶Activity的话,就finish掉,展示在栈顶的Activity。这个么做的原因是,只要这个APP进程没有被销毁,切换到后台(暂时不销毁)后,即使再次重新启动SplashActivity,也不会重新创建任务栈,还是在原有任务栈中进行操作。
方法二:
在LoginActivity和MainActivity的AndroidManifest配置
android:launchMode="singleTask"