SharedPreferences值不会持久存在吗?

本教程将介绍SharedPreferences值不会持久存在吗?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

SharedPreferences值不会持久存在吗? 教程 第1张

问题描述

我有一个方法,方法如下:

public static void addHighligtedDate(String date){
  prefs = context.getSharedPreferences(Fields.SHARED_PREFS_FILE, 0);
  Set<String> highlightedDates = prefs.getStringSet(Fields.HIGHLIGHTED_DATES, new HashSet<String>());
  highlightedDates.add(date);
  SharedPreferences.Editor editor = prefs.edit();
  editor.putStringSet(Fields.HIGHLIGHTED_DATES, highlightedDates);
  editor.commit();
 }

现在的场景是这样的:
当我打开应用程序添加要突出显示的日期时,它们会突出显示,因为SharedPreferences包含这些值。当我按下主页按钮退出应用程序并返回时,这些值仍然存在。

但是,当应用程序从最近的版本中删除时,这些值就消失了。这是正常行为还是我做错了什么?

正在查看文档:

此数据将在用户会话中保持不变(即使您的应用程序
被杀)。

推荐答案

SharedPreferences始终随应用卸载一起删除。

卸载任何应用程序时,该应用程序在您的内部存储器中所做的所有更改都将被撤消,这意味着Android操作系统会自动删除您的。

检查-how-to-remove-shared-preference-while-application-uninstall-in-android

更新:

但是,当应用程序被终止或关闭时,SharedPreferences中的值仍然存在。您的代码中存在一些问题。

将方法更改为-

public static void addHighligtedDate(String date){
  prefs = context.getSharedPreferences(Fields.SHARED_PREFS_FILE, 0);
  Set<String> highlightedDates = prefs.
  getStringSet(Fields.HIGHLIGHTED_DATES, new HashSet<String>());
  highlightedDates.add(date);
  SharedPreferences.Editor editor = prefs.edit();
  editor.clear();
  editor.putStringSet(Fields.HIGHLIGHTED_DATES, highlightedDates);
  editor.commit();
 }

更新:

公共抽象集getStringSet(String key,set
默认值)

从首选项中检索一组字符串值。

请注意,您不能修改此调用返回的Set实例。
如果您这样做,则不能保证存储数据的一致性,也不能保证
您完全可以修改实例。

参数

要检索的首选项的名称。

还要查找引用-sharedpreferences-does-not-save-on-force-close。

好了关于SharedPreferences值不会持久存在吗?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。