在不破坏底部活动的情况下返回一些活动
Going back few activities without destroying the bottom one
我做了一个包含 3 个活动的简单示例:
ActivityA
ActivityB
ActivityC
每个按钮上只有一个按钮。
ActivityA
上的按钮打开 ActivityB
val intent = Intent(this, ActivityB::class.java)
startActivity(intent)
ActivityB
上的按钮打开 ActivityC
val intent = Intent(this, ActivityC::class.java)
startActivity(intent)
ActivityC
上的按钮应该返回到 ActivityA
但在进程中杀死 ActivityB
val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(intent)
它做了我想要的,整个流程在记录时看起来像这样:
ActivityA onCreate()
ActivityA button clicked
ActivityB onCreate()
ActivityB button clicked
ActivityC onCreate()
ActivityC button clicked
ActivityB onDestroy()
ActivityA onDestroy()
ActivityA onCreate()
ActivityC onDestroy()
此解决方案的问题在于 ActivityA
被重新创建(销毁和创建)。 有没有办法恢复它?
免责声明:
这当然只是一个简化的案例。由于我的应用程序中的几个原因,我宁愿避免在点击方法上使用 onActivityResult()
和 finish()
。我需要保留正确的后退按钮行为。
你几乎做对了。你缺少的(为了避免 activity 重新创建)是一个 FLAG_ACTIVITY_SINGLE_TOP
标志。
val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
更多信息here
我做了一个包含 3 个活动的简单示例:
ActivityA
ActivityB
ActivityC
每个按钮上只有一个按钮。
ActivityA
上的按钮打开ActivityB
val intent = Intent(this, ActivityB::class.java) startActivity(intent)
ActivityB
上的按钮打开ActivityC
val intent = Intent(this, ActivityC::class.java) startActivity(intent)
ActivityC
上的按钮应该返回到ActivityA
但在进程中杀死 ActivityBval intent = Intent(this, ActivityA::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) startActivity(intent)
它做了我想要的,整个流程在记录时看起来像这样:
ActivityA onCreate()
ActivityA button clicked
ActivityB onCreate()
ActivityB button clicked
ActivityC onCreate()
ActivityC button clicked
ActivityB onDestroy()
ActivityA onDestroy()
ActivityA onCreate()
ActivityC onDestroy()
此解决方案的问题在于 ActivityA
被重新创建(销毁和创建)。 有没有办法恢复它?
免责声明:
这当然只是一个简化的案例。由于我的应用程序中的几个原因,我宁愿避免在点击方法上使用 onActivityResult()
和 finish()
。我需要保留正确的后退按钮行为。
你几乎做对了。你缺少的(为了避免 activity 重新创建)是一个 FLAG_ACTIVITY_SINGLE_TOP
标志。
val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
更多信息here