BUG记录
1. 回到桌面后再次启动,出现splash界面
昨天给测试发送了新的测试包,结果返回给我一个bug:app在已经登录后,点击回到桌面后再次点击应用图标,闪屏页又再次启动了,接着跳转到登录页(没有做持久化登录)。这个情况之前没有遇到过,在网上找了一圈,找了答案,特此记录一下。
引用
Android Bug分析系列:第三方平台安装app启动android是什么系统后,home键回到桌面后点击app启动时会再次启动入口类approvebug的原因剖析
bug原因
由于第三方app启动的intent与桌面启动的intent不一致,导致了本应用的入application口被再一次启用
解决方案
// 避免从桌面启动程序后,会重新实例化入口类的activity
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;
}
}
}
注意事项
按照正常逻辑,splash大多有一些初始化的操作,并且在
onDestroy
方法中会释放这些对象。为了修复这个bug,上面的代码是在onCreate
中立即执行了,这样一些对象还未被初始化的,所以在onDestroy
释放对象时需要做非空判断。