【问题标题】:Android - save activity state and list view itemsAndroid - 保存活动状态和列表视图项目
【发布时间】:2011-10-23 19:45:59
【问题描述】:

我目前有一个由用户自行填充的listview。我希望这样当用户离开活动并返回时,用户添加的所有内容仍然在listview 中。我一直在阅读有关 onSaveInstanceState 的信息,但我不知道这是否是正确的方法。任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: android listview android-activity android-listview


    【解决方案1】:

    这不是你所需要的; onSaveInstaceState 在系统终止您的活动以回收资源(低内存)之前保存实例,而不是在用户明确退出它时。

    如果您想保存活动状态,以便无论何时用户进入它都会保持不变,您必须将数据保存在文件/共享首选项/使用内容提供程序上。 如果您只想保存单个列表视图项目的本地数据,我建议使用共享首选项,因为它非常简单直观。了解他们here

    【讨论】:

      【解决方案2】:

      我假设如果用户正在填充一些数据,那么该数据在某处(SQLite、云等)有存储。我建议积极存储用户输入的任何内容(即,一旦他们单击“新建”并输入新列表项,推送到数据库并刷新列表)。因此,当调用应用程序 onResume() 时,您可以从其源中获取数据并重新填充列表视图。暂时保存到 SharedPreferences 听起来很麻烦(对于项目列表)。

      【讨论】:

        【解决方案3】:

        如果 Activity 在离开和返回之间没有被破坏,那么您的数据应该在用户离开它的位置(除非您在恢复时进行了一些重新初始化)。但是您不能指望这一点,因为 Android 可能会在需要时释放资源,而非运行的 Activity 可能会成为此类行为的受害者。

        因此,您应该 - 如前所述 - 将数据保存到持久存储中。如果只是为了这个Activity,而且数据量很小,那么SharedPreferences是一个很好很简单的解决方案。在 onPause() 中保存,在 onResume() 中加载,只有当手机因您的 Activity 提前而死机时,您才会丢失数据。

        我不建议为此使用文件,但如果您的数据必须通过不同的视图访问、处理、排序、过滤等,那么您可能会考虑使用 SQLite。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-24
          相关资源
          最近更新 更多