我正在开发一款使用大量SharedPreferences的Android应用。我有几个SharedPreferences文件,我在整个应用程序中最多可以调用77个这些文件。有时我会使用:
static final String FileName= "SharedPreferencesFile";
在我的活动开始时然后:
SharedPreferences settings = getSharedPreferences(FileName, Context.MODE_PRIVATE);
每当我需要使用它们时。有时候,我只是直接引用文件,如下所示:
SharedPreferences settings = getSharedPreferences("SharedPreferencesFile", Context.MODE_PRIVATE);
我现在正试图组织一些事情,所以我想了解不同的替代方案。我的问题是:
String FileName= "SharedPreferencesFile"
中定义所有这些strings.xml
,而不是将它们放在我的活动开头,只需将它们用作SharedPreferences settings = getSharedPreferences(R.string.SharedPreferencesFile, Context.MODE_PRIVATE);
答案 0 :(得分:2)
我应该为所有变量定义一个“SharedPreferencesFile” 在我的应用程序中或使用多个文件,因为我现在正在做什么?
如果您可以按逻辑方式对它们进行分类,请执行此操作。不要只是为了让它们以随机的方式分割成多个文件。它会在以后导致很多混乱
我应该在中定义所有这些String FileName =“SharedPreferencesFile” 我的app资源文件夹中的strings.xml而不是它们 在我的活动开始时,只是将它们用作 SharedPreferences设置= getSharedPreferences(R.string.SharedPreferencesFile, Context.MODE_PRIVATE);
将字符串资源提取到strings.xml
总是好的。如果要添加翻译并确保不翻译名称,请务必小心。将它们标记为notranslate
字符串资源。
我应该创建一个处理所有共享首选项的帮助程序类 按照Android共享偏好设置
中的建议调用每项活动
已有几种可用。这是我为简化SharedPreferences
的使用而创建的。它是开源的,只需添加一个gradle依赖项即可使用 - docs
答案 1 :(得分:1)
创建单个单例类,它将处理所有您的首选项,理想情况下,您应该为每个首选项设置一个getter和setter,并且您将只执行:
Preferences.getInstance().getSomePref();
和
Preferences.getInstance().setSomePref(value);
答案 2 :(得分:1)
您可以随时为每次通话使用相同的SharedPreferences
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
构建一个包含String get(String key)
和void set(String key)
的包装辅助类很容易。
像
这样的东西class MyPrefs {
static MyPrefs instance;
static synchronized getInstance(Context ctx) {
if(instance == null) {
instance = PreferenceManager.getDefaultharedPreferences(ctx);
}
return instance;
}
//then getters and setters e.g.
int getInt(String key, int defVal) {
return Integer.valueOf(getString(key))
}
String get(String key) {
return instance.getString(key);
}
}