SharedPreferences值不会持久存在吗?

SharedPreferences values do not persist?(SharedPreferences值不会持久存在吗?)

本文介绍了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.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值不会持久存在吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:SharedPreferences值不会持久存在吗?

基础教程推荐