Android 在不破坏最底层活动的情况下回顾一些活动
我做了一个简单的样本,包括3项活动:Android 在不破坏最底层活动的情况下回顾一些活动,android,android-intent,android-activity,kotlin,android-lifecycle,Android,Android Intent,Android Activity,Kotlin,Android Lifecycle,我做了一个简单的样本,包括3项活动: ActivityA ActivityB val intent = Intent(this, ActivityB::class.java) startActivity(intent) ActivityC val intent = Intent(this, ActivityC::class.java) startActivity(intent) 每个按钮上只有一个按钮 ActivityA上的按钮打开ActivityB
ActivityA
ActivityB
val intent = Intent(this, ActivityB::class.java)
startActivity(intent)
ActivityC
val intent = Intent(this, ActivityC::class.java)
startActivity(intent)
每个按钮上只有一个按钮
上的按钮打开ActivityA
ActivityB
val intent = Intent(this, ActivityB::class.java) startActivity(intent)
上的按钮打开ActivityB
ActivityC
val intent = Intent(this, ActivityC::class.java) startActivity(intent)
上的按钮应返回到ActivityC
,但在此过程中禁用ActivityBActivityA
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()
点击方式。我需要保持正确的后退按钮行为。你几乎做对了。您缺少的(为了避免活动重新创建)是一个标志\u activity\u SINGLE\u TOP
标志
val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
更多信息当B转到C时,使用finish();当C转到A时,使用finish();打电话给IntentI后,由于许多原因,我不能这样做。这只是一个简单的案例,你能告诉我一个原因吗?@AbhinavGupta Simple-我不想在每一个案例的过程中扼杀每一项活动。有些特殊情况我需要像这样回去。您的解决方案完全停止了备份/启动按钮的行为。请在Manifeat的活动标签中使用android:launchMode=“singletask”