app 退出到后台后,未被杀死,仍在运行,但是点击图标后会重新启动一次,再次重新创建一系列页面
项目中遇到了这个问题,非常影响用户的体验。
解决方法:
在APP的 启动页 中的onceate() 方法中加入此段代码即可。
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
finish();
return;
}
其实原因很简单,利用程序安装器打开程序,启动的Intent是没有带Category,而我们自己打开程序是带了Category,所以只需要在配置Intent.ACTION_MAIN的Activity判断下有无Category。然后放到通知栏的时候要根据有无Category 来生成启动的Intent。
或者在 启动页 中的onceate() 方法中,使用下面的代码也可以:
// 避免从桌面启动程序后,会重新实例化入口类的activity
if (!this.isTaskRoot()) { // 当前类不是该Task的根部,那么之前启动
Intent intent = getIntent();
if (intent != null) {
String action = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) { // 当前类是从桌面启动的
finish(); // finish掉该类,直接打开该Task中现存的Activity
return;
}
}
}
以上的代码二选一即可。
感谢: