Android从SharedReferences保存和读取值
如何以非常紧凑的方式保存首选项中的值(和读取),而不创建多个实例-我希望确保我只有一个pref的实例AAndroid从SharedReferences保存和读取值,android,Android,如何以非常紧凑的方式保存首选项中的值(和读取),而不创建多个实例-我希望确保我只有一个pref的实例ASharedReferences对象是一个自然的单实例。您第一次调用读取SharedReferences(例如PreferenceManager.getDefaultSharedReferences())将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取SharedReferences保持一致,您的流程中就只有一个实例(最多)。一个SharedReferences对象
SharedReferences
对象是一个自然的单实例。您第一次调用读取SharedReferences
(例如PreferenceManager.getDefaultSharedReferences()
)将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取SharedReferences
保持一致,您的流程中就只有一个实例(最多)。一个SharedReferences
对象是一个自然的单例对象。您第一次调用读取SharedReferences
(例如PreferenceManager.getDefaultSharedReferences()
)将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取SharedReferences
保持一致,您的流程中就只有一个实例(最多)。一个SharedReferences
对象是一个自然的单例对象。您第一次调用读取SharedReferences
(例如PreferenceManager.getDefaultSharedReferences()
)将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取SharedReferences
保持一致,您的流程中就只有一个实例(最多)。一个SharedReferences
对象是一个自然的单例对象。您第一次调用读取SharedReferences
(例如PreferenceManager.getDefaultSharedReferences()
)将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取共享引用保持一致,您的过程中就只能有一个实例(最多)。Commonware是正确的,但正如我所理解的,您希望以某种方式根据首选项来构建您的工作,我使用singleton来实现这一点,类似这样:
public class Preferences {
private static final String USERNAME = "username";
private static final String LOG_TAG = Preferences.class.getSimpleName();
private static Preferences sInstance;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context mContext;
private Preferences(Context context) {
mContext = context;
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mEditor = mSharedPreferences.edit();
}
public static Preferences getInstance(Context context) {
if (sInstance == null) {
sInstance = new Preferences(context);
}
return sInstance;
}
public void setUsername(String username) {
mEditor.putString(USERNAME, username);
commit();
}
public String getUsername() {
return mSharedPreferences.getString(USERNAME, null);
}
public boolean commit() {
return mEditor.commit();
}
}
在需要的地方写
Preferences.getInstance(this).setUsername("USERNAME");
阅读
Preferences.getInstance(this).getUsername();
Commonware是正确的,但正如我所理解的,您希望以某种方式通过首选项来构建您的工作,我使用singleton来实现这一点,类似这样:
public class Preferences {
private static final String USERNAME = "username";
private static final String LOG_TAG = Preferences.class.getSimpleName();
private static Preferences sInstance;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context mContext;
private Preferences(Context context) {
mContext = context;
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mEditor = mSharedPreferences.edit();
}
public static Preferences getInstance(Context context) {
if (sInstance == null) {
sInstance = new Preferences(context);
}
return sInstance;
}
public void setUsername(String username) {
mEditor.putString(USERNAME, username);
commit();
}
public String getUsername() {
return mSharedPreferences.getString(USERNAME, null);
}
public boolean commit() {
return mEditor.commit();
}
}
在需要的地方写
Preferences.getInstance(this).setUsername("USERNAME");
阅读
Preferences.getInstance(this).getUsername();
Commonware是正确的,但正如我所理解的,您希望以某种方式通过首选项来构建您的工作,我使用singleton来实现这一点,类似这样:
public class Preferences {
private static final String USERNAME = "username";
private static final String LOG_TAG = Preferences.class.getSimpleName();
private static Preferences sInstance;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context mContext;
private Preferences(Context context) {
mContext = context;
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mEditor = mSharedPreferences.edit();
}
public static Preferences getInstance(Context context) {
if (sInstance == null) {
sInstance = new Preferences(context);
}
return sInstance;
}
public void setUsername(String username) {
mEditor.putString(USERNAME, username);
commit();
}
public String getUsername() {
return mSharedPreferences.getString(USERNAME, null);
}
public boolean commit() {
return mEditor.commit();
}
}
在需要的地方写
Preferences.getInstance(this).setUsername("USERNAME");
阅读
Preferences.getInstance(this).getUsername();
Commonware是正确的,但正如我所理解的,您希望以某种方式通过首选项来构建您的工作,我使用singleton来实现这一点,类似这样:
public class Preferences {
private static final String USERNAME = "username";
private static final String LOG_TAG = Preferences.class.getSimpleName();
private static Preferences sInstance;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
private Context mContext;
private Preferences(Context context) {
mContext = context;
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
mEditor = mSharedPreferences.edit();
}
public static Preferences getInstance(Context context) {
if (sInstance == null) {
sInstance = new Preferences(context);
}
return sInstance;
}
public void setUsername(String username) {
mEditor.putString(USERNAME, username);
commit();
}
public String getUsername() {
return mSharedPreferences.getString(USERNAME, null);
}
public boolean commit() {
return mEditor.commit();
}
}
在需要的地方写
Preferences.getInstance(this).setUsername("USERNAME");
阅读
Preferences.getInstance(this).getUsername();
你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗