【问题标题】:How to save state of activity on android on back key press如何在后退键按下时保存 android 上的活动状态
【发布时间】:2023-03-22 16:41:01
【问题描述】:

我正在编写的 Android 应用程序出现问题,这似乎应该是一个常见问题,但我找不到任何相关信息。

我的应用程序中有一个记分牌活动,它只在文本视图中存储一个分数网格,这是用户将更新的东西,然后点击返回键并查看其他一些活动,然后稍后再回来更新它,再离开,等等……

问题是每次他们离开和回来时,整个活动都会重置,失去所有分数。我不能使用 saveInstanceState ,因为按下后退键时不会调用它。除了将整个网格保存在共享首选项中之外,我真的不知道从哪里开始,但我觉得必须有更好的方法

有什么想法吗?

【问题讨论】:

  • 使用共享偏好。
  • 嘿,我遇到了和你一样的问题。你找到解决方案了吗?谢谢。

标签: android android-activity state-saving


【解决方案1】:

一般情况下,需要在onPause()中保存任何状态信息,在onResume()中恢复。

我的印象是关闭App时会自动保存各种状态信息,再次启动时会自动恢复(直到Android将App从内存中删除以腾出空间,调用onDestroy())。

如果我是你,我会将网格存储在 SharedPreference 中。这确实是最可靠的解决方案。

您还可以使用本主题中的详细信息: https://stackoverflow.com/a/151940/503508

【讨论】:

    【解决方案2】:

    希望对你有帮助

    当用户按下 BACK 按钮时,您的前台活动将被销毁。该活动将使用onPause(), onStop(), and onDestroy() 调用。然后该活动对象将被垃圾收集(除非您引入了内存泄漏)。

    onSaveInstanceState() 将定期调用,如果活动有可能很快被销毁,但在某种程度上用户可能能够导航回它。最突出的情况是在配置更改期间,例如旋转屏幕。

    如果有的话,您应该在onPause() 中做的是使用“sqlite、文件保存和其他持久性方法”来持久化数据。一旦调用了onPause(),就无法保证此活动会持续存在,或者您的整个过程都会持续存在。因此,您重视的任何内容都应该写入持久存储。

    onSaveInstanceState() 的“状态”会影响活动的 UI,但不属于持久数据模型的一部分。其中大部分是由该方法的 Android 内置实现自动为您处理的(例如,EditText 中的文本),但如果您愿意,您可以将自己的信息添加到 Bundle。但是,您的实例状态不是您的数据模型,因此您想要保留的任何内容都需要写入持久存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多