防止背景活动被杀?

时间:2012-01-02 17:53:23

标签: java android

我有一个包含菜单项列表的应用。单击菜单项时,它会打开相应的活动。现在,在单击后退按钮并返回主列表的新活动中,该活动将被杀死,并且当您再次启动它时它不会返回到其过去的状态。

我的问题是,你离开它时是否有可能不杀死它?

我尝试保存这样的值:

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

但是,一旦活动被杀死并重新启动,oncreate方法就不会读取任何数据:

    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();
                }
        }

对此有任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您正在使用onSaveInstanceState保存状态,但这并不意味着当您按下时会在活动生命周期中保存状态。这意味着在方向变化等方面保存状态。如果你想在方向变化中保存一些状态,那么就需要这样做,所以你就在那里。

现在,为了在活动生命周期中保存某些内容,您有两种选择:

  • 一,将您的状态保存到持久数据库或其他内容。
  • 其次,如果不将其存储在DB中,则使用getPreferences并使用此存储它。这将仅为该特定活动存储它。如果你试图存储活动状态,我会推荐这个。

编辑:

将活动保持活着不是推荐/记录的方法。您可以在后台运行Service,但不会像Activity那样包含用户界面。如果按Home键而不是Back,那么它将起到类似方向更改的作用。

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

价:

getPreferences Shared Storage Saving Activity State

答案 1 :(得分:-1)

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

对于BackStack,您可以查看here