是的,您可以将其设为公开静态:
public static void setSharedPrefs(Context context, String key, String value) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value).commit();
}
在某些情况下要小心,在活动结束后您可能会保留上下文,这很糟糕。
您描述的更可能的情况是创建这样的类:
public class MyPrefs {
SharedPreferences settings;
SharedPreferences.Editor editor;
public MyPrefs(Context context){
settings = PreferenceManager.getDefaultSharedPreferences(context);
editor = settings.edit();
}
public void saveName(String name){
editor.putString("name", name).commit();
}
}
您将在扩展 Application 的类中延迟初始化此类,并在其中有一个 getter 来检索它,例如:
MyPrefs prefs = ((MyAppication) getContext().getApplicationContext()).getMyPrefs();
并像这样使用它:
prefs.saveName("blundell");
编辑
惰性初始化示例:
private MyPrefs prefs;
public MyPrefs getMyPrefs(){
if(prefs == null){
prefs = new MyPrefs(this);
}
return prefs;
}
注意这是一个类中的延迟初始化,Application
因此扩展this
是指您的应用程序上下文,并将在您的应用程序的持续时间内存在。如果您在哪里使用 Activity 上下文,您将不想使用延迟初始化。(所以使用应用程序上下文!)