Activity 会根据单击后退按钮时打开的次数自行重新打开
Posted
技术标签:
【中文标题】Activity 会根据单击后退按钮时打开的次数自行重新打开【英文标题】:Activity reopens itself by the number of times it is opened while back button is clicked 【发布时间】:2018-07-30 00:32:16 【问题描述】:让我们假设下面这样一个场景,在这个场景中,每个字母都指向一个活动,括号内的每个数字都指向打开时间,每个箭头都指向从一个到另一个的过渡
A(1) -> B(1) -> A(2)(意思是A打开,B打开,A再打开)
如果我按下返回按钮 A 会尝试再次打开
A(1) -> B(1) -> A(2) -> B(2) -> A(3) -> C(1) -> A(4)
此时,如果我按下返回按钮,我会尝试再次打开 4 次。我期望的是至少它应该打开 C(1) 然后 A(3) 然后 B(2) 然后 A(2) ...
问题在于将启动模式更改为 singleInstance 但我不明白为什么会这样?这是我第一次面临这样的问题。
<activity
android:name="ProfileActivity"
android:theme="@style/NoActionBarTheme">
</activity>
我在下面这样称呼它
fun launchProfileActivity(context: Activity)
context.startActivity(
Intent(context, ProfileActivity::class.java))
【问题讨论】:
我无法重现此行为。您是否正在修改在其他地方管理任务的方式? 我创建了这个虚拟项目来测试这种流程,它似乎可以按照您想要的方式工作。看看吧:github.com/bernardoroll/dummy-activity-stack-test 发布您的清单。您的描述难以理解。 【参考方案1】:您可以将 finish() 用于 A 和 B 之类的活动,这些活动被重复调用多次。一旦您切换到另一个活动,这将破坏活动 A。因此,下次切换到它时,只有一个 A 实例。 在 startActivity 方法之后写 finish()。
【讨论】:
我知道,但我要问的真正问题是为什么在 A4 关闭后它不显示 C1?通常它应该显示 C1 然后显示 A3。以上是关于Activity 会根据单击后退按钮时打开的次数自行重新打开的主要内容,如果未能解决你的问题,请参考以下文章
从 Activity 返回时如何获取最后一个 ListView 状态