android10 卸载应用出现回退栈异常问题

打开设置,打开APP1,使用adb uninstall 卸载APP1/或者杀掉APP1进程,没有回到设置而是回到了桌面

  1. 抓取eventlog,查看ams/wms打印,发现"am_focused_stack: appDied leftTaskHistoryEmpty"
  2. 源码中搜索"leftTaskHistoryEmpty",发现ActivityStack中当activity stack清空时会回到launcher
  3. 去掉回到launcher逻辑即可
  4. 对比 android13没有该现象,Android10原生设计逻辑如此,高版本wms和ams逻辑变化较大
java 复制代码
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index d1c767aeb444..0d1fa0507b63 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -5450,7 +5450,7 @@ class ActivityStack extends ConfigurationContainer {
                     && mRootActivityContainer.isTopDisplayFocusedStack(this)) {
                 String myReason = reason + " leftTaskHistoryEmpty";
                 if (!inMultiWindowMode() || adjustFocusToNextFocusableStack(myReason) == null) {
-                    getDisplay().moveHomeStackToFront(myReason);
+                    // getDisplay().moveHomeStackToFront(myReason);
                 }
             }
             if (isAttached()) {
相关推荐
诺诺Okami14 分钟前
Android Framework-Launcher-UI和组件
android
潘潘潘1 小时前
Android线程间通信机制Handler介绍
android
潘潘潘1 小时前
Android动态链接库So的加载
android
潘潘潘2 小时前
Android多线程机制简介
android
CYRUS_STUDIO4 小时前
利用 Linux 信号机制(SIGTRAP)实现 Android 下的反调试
android·安全·逆向
CYRUS_STUDIO4 小时前
Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
android·操作系统·逆向
黄林晴8 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我8 小时前
flutter 之真手势冲突处理
android·flutter
法的空间8 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止8 小时前
深入解析安卓 Handle 机制
android