【问题标题】:Is it usefull to use onSaveInstantState if I use SharedPreferences如果我使用 SharedPreferences,使用 onSaveInstanceState 是否有用
【发布时间】:2016-07-02 16:21:17
【问题描述】:

我有一个关于表演的问题。如果我使用 SharedPreferences ,使用 onSaveInstantState 有用吗?

我的意思是,如果值得做一个条件来测试:

if(savedInstanceState != null) {
    // load with on save instant state
}

else {
    // load with shared preferences
}

或者我应该总是从 SharedPreferences 加载数据?

谢谢

【问题讨论】:

  • 有什么要求??你要存储什么类型的数据?即使在应用程序被杀死并再次重新打开后,这些数据是否需要保持不变??
  • 是对象的集合(我使用gson存储在sharedPreferences中),数据需要持久化

标签: java android save sharedpreferences android-sharedpreferences


【解决方案1】:

是的,它仍然有用,有很多东西无法保存在 SharedPrefrences 字典中,例如列表、地图或任何其他自定义对象。

如果您希望数据通过应用程序使用(在您的应用程序被销毁后)持久化,您应该计划将信息保存在您的SharedPrefrences 上,如果您想通过configuration changes 持久化数据,则将信息保存在SaveInstanceState 包中(旋转,字体大小改变,语言改变)。

【讨论】:

  • 其实它是一个对象的集合,所以我使用 Gson 来保存这些数据。顺便说一句,是否值得使用 Gson 和 SharedPreferences(这是一个小集合,最多:100 个项目)或使用 SQLite?
  • 那将是另一个问题,但我会反序列化 JSON 并将对象保存在 SQLite 数据库中。
【解决方案2】:

如果您需要在任何情况下保持数据的持久性,请选择 SQLite

【讨论】:

  • 这就是为什么我想知道 Sqlite 会比 Sharedpreference + gson 快还是慢
  • SQLite 将在数据操作方面提供更多帮助。如果您需要查询某些条件的数据,SQLite 会有所帮助,但在 SharedPreferences 上无能为力。
  • 问题是我不需要编辑这些日期,只需阅读它们
  • 谢谢,我想我会继续使用 Sharedpreference
  • 只有一件事,SharedPreference 数据可以被删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2011-10-04
  • 2011-12-29
  • 1970-01-01
  • 2014-02-16
  • 2016-02-10
  • 2013-10-29
相关资源
最近更新 更多