【发布时间】:2019-04-20 07:48:34
【问题描述】:
我做了一个包含 3 个活动的简单示例:
ActivityAActivityBActivityC
每个按钮上只有一个按钮。
-
ActivityA上的按钮打开ActivityBval intent = Intent(this, ActivityB::class.java) startActivity(intent) -
ActivityB上的按钮打开ActivityCval 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()。我需要保留正确的后退按钮行为。
【问题讨论】:
-
当B去C时使用finish();当 C 去 A 使用 finish();调用 Intent 后
-
我不能这样做有很多原因。这只是简化案例
-
你能告诉我任何一个原因吗?
-
@AbhinavGupta 简单 - 我不想在每个案例中都杀死每一个活动。有一些特殊情况我需要这样回去。您的解决方案完全阻止了后退/向上按钮的行为。
-
在清单的活动标签中使用 android:launchMode="singletask"
标签: android android-intent android-activity kotlin android-lifecycle