Android - 保存活动状态和列表视图项

时间:2011-10-23 19:46:00

标签: android listview android-activity android-listview

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

因此,您应该 - 按照建议 - 将数据保存到持久存储中。如果它仅适用于此活动,并且它只是少量数据,那么SharedPreferences是一个简单易用的解决方案。保存在onPause()中,加载onResume(),只有当手机事先死掉你的活动时,你才会丢失数据。

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