我正在尝试开发一个包含多个活动的应用程序,我正在使用 singleInstance
启动模式,以便同一活动不会有多个示例。但是,当我按下测试电话上的home(主页)按钮时 onStop()
但不是 onDestroy()
,然后我再次启动应用程序(通过单击图标),它会让我回到 MainActivity
. 进一步调查,我发现 adb shell dumpsys activity | grep -i run
命令)不受影响,除了 MainActivity
,它突然出现在堆栈的顶部。
我试图在网上搜索这个问题,但没有看到类似的。我可能只是忽略了一些显而易见的事情,但我不知道。谢谢你的帮助!
编辑---
我将举一个例子说明发生了什么以及我的预期。我在启动应用程序 MainActivity
,然后导航到另一个活动( AboutUs
)使用按钮。但是,当我按home按钮(在手机上)并再次单击应用程序图标时,而不是转到 AboutUs
,转到 MainActivity
. AboutUs
仍在堆栈中,但就在下面 MainActivity
. 所以,烟囱没有受到干扰除了 MainActivity
上升到顶端。
这是一张 Profiler
来自安卓工作室。如你所见,我点击了一个按钮 AboutUs
,然后按手机上的home键,这就产生了一个间隙。在我再次点击应用程序后,它又回到了 MainActivity
. MainActivity
是单示例和启动器活动。
1条答案
按热度按时间5q4ezhmt1#
删除特殊启动模式
singleInstance
从<activity>
声明MainActivity
在你的舱单上。这种特殊的启动模式是导致问题的原因。通常应避免特殊启动模式singleInstance
以及singleTask
因为他们造成的问题比解决的问题还多。这些只有在非常特殊的情况下才需要(例如,如果您想编写自己的主屏幕替换)。