开发app时,发现一个很奇怪的现象,就是按home键后,再回到app时,总时不能回到按home键之前的状态,于是查了很多资料,也找了很久自己写的代码,最终得以解决!
我的app场景是这样的,默认启动页面是LoginActivity,登录时,需要根据不同的角色看到不同的主页,比如:HomeActivity和ZHomeActivity,在AndroidManifest.xml中设置就不赘述了。
我理解的出现这个问题的原因是,在HomeActivity界面中切换到非默认fragment后,按home键,再回到app时,会按AndroidManifest配置默认界面启动,即先调用LoginActivity,然后再根据是否登录来直接跳转到HomeActivity页面。初次进入app,我们已经在HomeActivity页了,此时堆栈的内容应该是:LoginActivity-》HomeActivity-》按home键,再回到app时,会再此创建新的LoginActivity。
找到问题,现在解决,在LoginActivity的onCreate()方法中实现以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!isTaskRoot()) {
final Intent intent = getIntent();
final String intentAction = intent.getAction();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent
.ACTION_MAIN)) {
finish();
return;
}
}
setContentView(R.layout.activity_login);
}
自此,问题解决。