MainActivity 在应用打开时跳转到栈顶
MainActivity jumps to the top of the stack when app is opened
我正在尝试开发具有多个 Activity 的应用程序,并且我正在使用 singleInstance
启动模式,这样就不会出现相同 activity 的多个实例。但是,当我在测试 phone 上按下主页按钮(调用 onStop()
但不调用 onDestroy()
,然后我再次启动应用程序(通过单击图标)时,它让我回来了到 MainActivity
。进一步调查,我发现活动堆栈(使用 adb shell dumpsys activity | grep -i run
命令)没有受到影响,除了 MainActivity
,它弹出到堆栈的顶部。
我试着在网上搜索这个问题,但没有找到类似的东西。我可能只是忽略了一些明显的东西,但我不知道。感谢您的帮助!
编辑 ---
我将举例说明发生的情况和我的预期。我从 MainActivity
开始关闭应用程序,然后使用按钮导航到另一个 activity (AboutUs
)。但是,当我按下主页按钮(在 phone 上)并再次单击应用程序图标时,它不会转到 AboutUs
,而是转到 MainActivity
。 AboutUs
仍在堆栈中,但就在 MainActivity
下方。因此,除了 MainActivity
上升到顶部之外,堆栈没有受到干扰。
这是来自 Android Studio 的 Profiler
图片。如您所见,我单击了一个按钮转到 AboutUs
,然后在 phone 上单击了主页按钮,这造成了一个缺口。我再次点击该应用程序后,它又回到了MainActivity
。 MainActivity
既是单实例又是启动器 activity.
从清单中 MainActivity
的 <activity>
声明中删除特殊启动模式 singleInstance
。这种特殊的启动模式是您遇到问题的原因。通常应避免使用特殊启动模式 singleInstance
和 singleTask
,因为它们造成的问题多于解决的问题。这些仅在非常特殊的情况下才需要(例如,如果您想编写自己的 HOME 屏幕替换)。
我正在尝试开发具有多个 Activity 的应用程序,并且我正在使用 singleInstance
启动模式,这样就不会出现相同 activity 的多个实例。但是,当我在测试 phone 上按下主页按钮(调用 onStop()
但不调用 onDestroy()
,然后我再次启动应用程序(通过单击图标)时,它让我回来了到 MainActivity
。进一步调查,我发现活动堆栈(使用 adb shell dumpsys activity | grep -i run
命令)没有受到影响,除了 MainActivity
,它弹出到堆栈的顶部。
我试着在网上搜索这个问题,但没有找到类似的东西。我可能只是忽略了一些明显的东西,但我不知道。感谢您的帮助!
编辑 ---
我将举例说明发生的情况和我的预期。我从 MainActivity
开始关闭应用程序,然后使用按钮导航到另一个 activity (AboutUs
)。但是,当我按下主页按钮(在 phone 上)并再次单击应用程序图标时,它不会转到 AboutUs
,而是转到 MainActivity
。 AboutUs
仍在堆栈中,但就在 MainActivity
下方。因此,除了 MainActivity
上升到顶部之外,堆栈没有受到干扰。
这是来自 Android Studio 的 Profiler
图片。如您所见,我单击了一个按钮转到 AboutUs
,然后在 phone 上单击了主页按钮,这造成了一个缺口。我再次点击该应用程序后,它又回到了MainActivity
。 MainActivity
既是单实例又是启动器 activity.
从清单中 MainActivity
的 <activity>
声明中删除特殊启动模式 singleInstance
。这种特殊的启动模式是您遇到问题的原因。通常应避免使用特殊启动模式 singleInstance
和 singleTask
,因为它们造成的问题多于解决的问题。这些仅在非常特殊的情况下才需要(例如,如果您想编写自己的 HOME 屏幕替换)。