我将2个字符串保存到共享偏好设置,偶尔会因某些原因被删除。 我知道这里有关于stackoverflow的其他几个问题,但是没有这些问题对我有帮助..
我保存到共享偏好的方式有问题吗?
有没有人知道是什么导致了这个问题,它只发生了两次,比如两周或者其他什么......所以我可以测试一下,看看我是否已经解决了这个问题?
static void saveTitlePref(Context context, int mAppWidgetId, String text) {
SharedPreferences.Editor editor = context.getSharedPreferences(PREFS_NAME, 0).edit();
editor.putString(PREF_PREFIX_KEY + mAppWidgetId, text);
editor.apply();
}
static void saveSizePref(Context context, int mAppWidgetId, String size) {
SharedPreferences.Editor editor = context.getSharedPreferences(PREFS_NAME, 0).edit();
editor.putString(PREF_SIZE_PREFIX_KEY, size);
editor.apply();
}
我像这样加载它们:
static String loadTitlePref(Context context, int mAppWidgetId) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String prefix = prefs.getString(PREF_PREFIX_KEY + mAppWidgetId, null);
// If there is no preference saved, get the default from a resource
if (prefix != null) {
return prefix;
} else {
return context.getString(R.string.appwidget_prefix_default);
}
}
static String loadSizePref(Context context, int mAppWidgetId) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
String sizeprefix = prefs.getString(PREF_SIZE_PREFIX_KEY, null);
// If there is no preference saved, get the default from a resource
if (sizeprefix != null) {
return sizeprefix;
} else {
return "24";
}
}
答案 0 :(得分:0)
您使用的是多个流程还是单个流程?
您使用的API级别是多少?我知道在API级别11中,Google更改了默认标志,因此MODE_MULTI_PROCESS不再是默认标志。只是一个想法。
答案 1 :(得分:0)
它可能不是你的情况下的安装,但我遇到了类似的问题。它“消失”的原因是由于某些原因String example = "notnull"
无法使用以下方式进行比较:
example != null;
这使得它看起来已经消失但却没有。如果你这样称呼:
example.equals(null);
它将能够识别它。我知道这与第一个相反,但你弄清楚了。这可能不是你的答案,但你应该尝试。
答案 2 :(得分:0)
我刚刚将editor.apply();
更改为editor.commit();