返回上一个活动而不删除当前状态 - Android

时间:2014-08-22 08:42:31

标签: android

我写了一个包含多个活动和主要活动的Android应用。当我从主要活动转到活动B时,我想"暂停"主活动,当按下后退按钮时,它应该返回并重新激活主活动,而不是调用onCreate()

这适用于所有活动,因此如果我单击按钮启动活动B,它还应重新激活旧活动B,而不是创建onCreate()的新状态。

我怎么能意识到这一点?

PS:我已经尝试使用parcelable,但这只有在我关闭应用程序或发生意外情况时才有效。

3 个答案:

答案 0 :(得分:2)

默认情况下是Android。如果从活动A启动活动B,则活动A将进入停止状态。下面的方法将被称为活动A

  1. 的onPause()
  2. 的onStop()
  3. 点击活动B上的返回键时,将调用活动A的方法。

    1. onRestart()
    2. 在onStart()
    3. 的onResume()
    4. 要重新激活活动B,您可以将活动B启动模式设置为singleInstance。这将确保仅创建活动B的单个实例。 onCreate将不再被调用。重新激活该活动时将调用onNewIntent。

      参考:http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

答案 1 :(得分:2)

启动另一项活动时,第一项活动可能会被销毁。当你回到它时它将被重建。每个应用程序都应该考虑到这种可能性。要确保您的活动可以处理被销毁和重新创建,请启用“不要保留活动”开发人员选项。

答案 2 :(得分:1)

活动以堆叠顺序存在。每项活动都有其生命周期。当您关闭一个活动(示例中的活动B)时,它最终会到达onDestroy()方法并从堆栈顺序中删除。默认情况下,它在Android中,你无能为力。

您可以做的是重写活动B中的onStop()方法并在SharedPreferences中保存一些活动数据(例如EditText中的文本) - read here。然后在onCreate()方法中,您可以调用SharedPreferences,检查它是否为空,并通过按键拉取适当的值来恢复EditText中的文本。