我做了一个简单的示例,其中包含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()
。我需要保留正确的后退按钮行为。
答案 0 :(得分:2)
您做得差不多。为了避免重新创建活动,您缺少的是一个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