Android从SharedPreferences中保存和读取值

时间:2015-03-17 19:52:13

标签: android

如何在不创建多个实例的情况下以非常紧凑的方式保存首选项(和读取)中的值 - 我希望确保我只有一个pref实例

2 个答案:

答案 0 :(得分:2)

SharedPreferences对象是一个自然的单身人士。您第一次使用SharedPreferences(例如PreferenceManager.getDefaultSharedPreferences())阅读的电话会创建它。同一进程中的第二次和后续调用将返回相同的实例。因此,只要您对从SharedPreferences获取{{1}}的位置保持一致,您的流程中将只有一个实例(最多)。

答案 1 :(得分:1)

CommonsWare是对的,但正如我所理解的那样,你想要以某种方式构建你的工作与偏好,我使用单身,这样的事情:

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();