gpt4 book ai didi

java - 防止后台Activity被杀死?

转载 作者:行者123 更新时间:2023-12-01 15:37:08 24 4
gpt4 key购买 nike

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

我的问题是,当您离开 Activity 时是否可以不终止它?

我尝试像这样保存值:

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

但是,一旦 Activity 被终止并重新启动,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();
}
}

对此的任何帮助表示感谢。

最佳答案

您正在使用onSaveInstanceState保存状态,但这并不意味着当您按回键时在整个 Activity 生命周期中保存状态。这意味着跨方向更改等保存状态。如果您想跨方向更改保存某些状态,则需要这样做,所以您就在那里。

现在,要在 Activity 生命周期中保存某些内容,您有两种选择:

  • 一,将您的状态保存到持久数据库或其他东西中。
  • 其次,如果不存储在数据库中,则使用getPreferences并使用它存储它。这将仅为该特定 Activity 存储它。如果您尝试存储 Activity 状态,我会推荐此方法。

编辑:

让 Activity 保持 Activity 状态并不是推荐/记录的方法。您可以让 Service 在后台运行,但不像 Activity 那样包含 UI。如果您按“主页”按钮而不是“返回”,那么它会起到类似于方向更改的作用。

简而言之,Activity 负责保存其状态。也就是说,某些 UI 控件会自行保存其状态,因此您不必保存其状态,例如 EditText 将保存其状态。

引用:

getPreferences Shared Storage Saving Activity State

关于java - 防止后台Activity被杀死?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8703772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com