【发布时间】:2021-03-11 06:43:55
【问题描述】:
我正在尝试开发具有多个活动的应用程序,并且我正在使用singleInstance 启动模式,这样就不会出现同一活动的多个实例。但是,当我按下测试手机上的主页按钮(调用 onStop() 而不是 onDestroy(),然后我再次启动应用程序(通过单击图标)时,它让我回到 MainActivity。进一步调查,我发现活动堆栈(使用adb shell dumpsys activity | grep -i run 命令)不受影响,除了MainActivity,它弹出到堆栈顶部。
我尝试在网上搜索这个问题,但没有看到类似的问题。我可能只是忽略了一些明显的东西,但我不知道。感谢您的帮助!
编辑---
我将举例说明发生的情况和我的预期。我从 MainActivity 启动应用程序,然后使用按钮导航到另一个活动 (AboutUs)。但是,当我按下主页按钮(在手机上)并再次单击应用程序图标时,它没有转到AboutUs,而是转到MainActivity。 AboutUs 仍在堆栈中,但在 MainActivity 下方。所以,除了MainActivity 上升到顶部之外,堆栈没有受到干扰。
这是来自 Android Studio 的 Profiler 的图像。如你所见,我点击了一个按钮转到AboutUs,然后点击了手机上的主页按钮,这产生了一个空白。在我再次点击该应用程序后,它又回到了MainActivity。 MainActivity 既是单实例又是启动器活动。
【问题讨论】:
-
在按下 Home 键之前,您的应用中有多少堆栈?
-
通常是 3-4 次活动。但是,当堆栈中只有 2 个活动时也会发生这种情况。
-
您能否介绍一下您的案例,包括预期结果和实际结果?
-
MainActivity 是启动器活动吗? MainActivity 是单实例吗?当您按下 Home 按钮时,屏幕上会显示哪些活动?您说当堆栈中有 2 个活动时会发生这种行为,它们是什么?
-
我添加了一个例子,希望能解决问题
标签: java android android-activity launchmode