我写了一个包含多个活动和主要活动的Android应用。当我从主要活动转到活动B时,我想"暂停"主活动,当按下后退按钮时,它应该返回并重新激活主活动,而不是调用onCreate()
。
这适用于所有活动,因此如果我单击按钮启动活动B,它还应重新激活旧活动B,而不是创建onCreate()
的新状态。
我怎么能意识到这一点?
PS:我已经尝试使用parcelable
,但这只有在我关闭应用程序或发生意外情况时才有效。
答案 0 :(得分:2)
默认情况下是Android。如果从活动A启动活动B,则活动A将进入停止状态。下面的方法将被称为活动A
点击活动B上的返回键时,将调用活动A的方法。
要重新激活活动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中的文本。