2012-01-02 97 views
0

我有一个应用程序,它有一个菜单项的列表。当你点击一个菜单项时,它会打开相应的活动。现在,当您单击后退按钮并返回到主列表时,在该新活动中,该活动会被终止,并且在您再次启动时它不会返回到过去的状态。防止背景活动被杀害?

我的问题是,当你离开它时可以不杀死这个活动吗?

我试图拯救值,像这样:在这个

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (savedInstanceState != null) { 
//This is not getting fired     
Toast.makeText(this, savedInstanceState.getString("TO_REMEMBER"), Toast.LENGTH_LONG).show(); 
       } 
     } 

任何帮助:

protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putString("TO_REMEMBER", "Remember this"); 
    } 

然而,一旦活动被打死,不是重新启动后,onCreate方法不读取任何数据非常感谢。

+0

你应该改变你处理返回堆栈 – 2012-01-02 17:55:39

+0

@AdelBoutros的方式我全新到Android。你能更深入地解释一下吗? – levi 2012-01-02 17:59:22

回答

2

您正在使用onSaveInstanceState保存状态,但这并不意味着在您按下后可在整个活动生命周期中保存状态。这是为了在方向变化等方面节省状态。如果你想要在方向变化中保存一些状态,那么就需要完成,所以你就在那里。

我们拯救整个活动的生命周期的东西,你有两个选择:

  • ,您的状态保存到持久DB什么的。
  • 其次,如果它不存储在DB中,则使用getPreferences并使用它存储它。这将仅存储该特定活动。如果您尝试存储活动状态,我会推荐这一点。

编辑:

好离开活动活着不是推荐/记录的方法。您可以让Service在后台运行,但不包含Activity所做的UI。如果按Home按钮而不是Back,那么它将执行类似于方向更改的操作。

简而言之,Activity负责保存其状态。也就是说,一些UI控件自己保存它们的状态,所以你不必保存它们的状态,例如EditText会保存它的状态。

编号:

getPreferences Shared Storage Saving Activity State

+0

因此,当您离开它时不可能保持活动状态,而必须保存数据并将其恢复为创建状态? – levi 2012-01-02 18:19:26

+0

已在编辑中回复。 – havexz 2012-01-02 18:53:17

+0

感谢您的好评! – levi 2012-01-02 18:57:19

-1

如果您是Android新手,您应该从开发者指南开始,这是一个非常有用的初学者教程,它被发现here

至于BackStack,你可以检查它here