2017-09-03 87 views
0

这是对这个问题的后续问题:Android的背部压先前的活动重新启动,而不是恢复

How to resume activity instead of restart when going "up" from action bar

我得到了2个活动,都在清单中定义与android:launchMode="singleTop"

活动A调用活动B.活动B有一个后退按钮:

backButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      finish(); 
     } 
    }); 

在一些设备上是没有问题的和先前的活动恢复。其他设备正在重新启动之前的活动,而不是恢复它。这是为什么?

回答

0

这可能是因为在某些设备上,您的活动正在垃圾收集以节省内存。如果你想继续而不是重新启动,即使在android中杀死你的活动覆盖onSaveInstanceState方法,并保存你的所有变量。

现在当你回到你的活动中时,如果它被杀死了,那么在创建一个包时会传递一个名为savedINstanceState的对象。如果savedInstanceState不为null,则使用其中的数据将您的活动恢复到之前的状态。

更多的细节在这里:How to use onSaveInstanceState() and onRestoreInstanceState()?

+0

我可以保存状态的片段,并在其活动的恢复? –

+0

查看此问题的接受答案:https://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack –

+0

问题是我并不需要恢复状态,而是恢复堆栈。当用户在第二个活动中按下后退按钮时,是在第一个活动的堆栈中有大约3个片段之后。当活动B完成并且A重新启动时,我失去了堆栈,我需要返回到前一个片段,但是也按照它们的顺序将堆栈中的其他片段放入..我该怎么做? –

相关问题