Android从SharedReferences保存和读取值

Android从SharedReferences保存和读取值,android,Android,如何以非常紧凑的方式保存首选项中的值(和读取),而不创建多个实例-我希望确保我只有一个pref的实例ASharedReferences对象是一个自然的单实例。您第一次调用读取SharedReferences(例如PreferenceManager.getDefaultSharedReferences())将创建它。同一进程内的第二次和后续调用将返回同一实例。因此,只要您对从何处获取SharedReferences保持一致,您的流程中就只有一个实例(最多)。一个SharedReferences对象

如何以非常紧凑的方式保存首选项中的值(和读取),而不创建多个实例-我希望确保我只有一个pref的实例A
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();

你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗?你试过什么,有什么问题?你能阅读并更新你的问题吗