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释放对象时需要做非空判断。