我启动主要活动,在UI中更改一些设置,按后退按钮,然后重新打开活动。再次调用onCreate()
并将活动恢复为默认状态。这是为什么?
我希望只有onResume()
被调用,因为我在Manifest中有这个:
android:launchMode="singleInstance"
答案 0 :(得分:2)
尝试使用moveTaskToBack(true);
中的onBackPressed()
隐藏当前活动而不是销毁,这样您就可以重新打开它了
@Override
public void onBackPresses(){
moveTaskToBack(true);
}
答案 1 :(得分:1)
我启动主要活动,在UI中更改一些设置,按后退按钮,然后重新打开活动。再次调用onCreate()并将活动恢复为默认状态。这是为什么?
这是活动生命周期的预期行为。当您按下后退按钮然后活动被销毁时,它将从onCreate
方法开始。
答案 2 :(得分:1)
这是因为当您按下时,它会破坏活动。 我认为你想要的是在你回到这个活动时保持状态,而不是真的有一个实例。因此,您应该保存所需的信息,然后在onCreate中恢复它们。
单个实例仅意味着(如果我记得很清楚)如果你在没有完成它们的情况下启动多个活动,那么具有singleInstance的活动将在你调用startActivity()时返回到前面,并且不会调用onCreate。但这意味着你不能通过按下来获得这种行为。 也许你可以覆盖onBackPressed并启动另一个活动(你应该回去的那个),而不是调用super.onBackPressed()。这应该做你想要的,但如果认为它将难以管理。
顺便提一下,记住活动可能会被系统本身杀死,所以你不应该依赖你的活动没有被杀死的事实