Android Release 切换到后台再点桌面图标进入后, App 重启

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stupid56862/article/details/82219554

问题

  1. Release 版本在某些设备上 : 华为P8/6.0 系统 、小米 Note3 /7.0.1系统都出现了该问题( Debug 版事实上也可以重现)。
  2. 打开某个 Activity , 点击 Home 键 。
  3. 点击桌面 App 图标, 结果App 重新启动。

例如 : LaunchActivity -> MainActivity -> LoginActivity -> Home 键
此时再进入应该是 LoginActivity , 却进入了 LaunchActivity 。


解决方案

在 LaunchActivity 的 OnCreate 方法中添加判断。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (!isTaskRoot()
                && intent != null
                && intent.hasCategory(Intent.CATEGORY_LAUNCHER)
                && intent.getAction() != null
                && intent.getAction().equals(Intent.ACTION_MAIN)) {
            finish();
            return;
        }
   }

重现步骤

作为一名菜鸡程序员, 整天就会乱点, 然后我就有了点新发现 : 测试机型 : 小米 Note 3 / Android 8.0 / MIUI 10.0
1. 通过 adb 安装的 apk 包, 不会出现上述 Bug 。(我灵鸡一动,打出个 Debug 版本,发送到 QQ 安装,小米不让我安装。有办法,在你的 gradle.properties 中添加 android.injected.testOnly=false 。然后通过QQ安装后,重现了上述 Bug )
2. 第一次安装的时候,会出现该 Bug 。
3. 第一次安装后,如果你杀死应用再进去,不会出现该 Bug 。


重现步骤 :
1. 卸载你手机的应用,将你的应用 Release 版发到你的 QQ , 然后在 QQ中安装 apk 。(不要通过 adb 命令安装)
2. 进入界面 -> 点击Home键 -> 点击图标-> 应用重启 -> 最近任务杀死应用后 -> 无法重现该 Bug 了。

总结

上述 Bug 跟 Release 版本还是 Debug 版本无关。 和 adb 安装有关。

解决方案参考链接

https://stackoverflow.com/questions/19545889/app-restarts-rather-than-resumes

猜你喜欢

转载自blog.csdn.net/stupid56862/article/details/82219554