gpt4 book ai didi

java - 有没有办法让 SharedPreferences 在我的整个 Android 应用程序中全局化?

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:22 25 4
gpt4 key购买 nike

有没有办法让 SharedPreferences 在我的整个应用程序中全局化?现在我在我的代码中的很多地方都使用这些行来存储简单的开/关设置,以供我的用户设置的许多首选项。如果可能的话,我只想在全局范围内调用它们一次:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();

关于如何在所有类中调用这些行的任何提示都很棒:

editor.putString("examplesetting", "off");
editor.commit();

String checkedSetting = settings.getString("examplesetting", "");

最佳答案

使用围绕 SharedPreference 设置的单例类。像这样:

public class PrefSingleton{
private static PrefSingleton mInstance;
private Context mContext;
//
private SharedPreferences mMyPreferences;

private PrefSingleton(){ }

public static PrefSingleton getInstance(){
if (mInstance == null) mInstance = new PrefSingleton();
return mInstance;
}

public void Initialize(Context ctxt){
mContext = ctxt;
//
mMyPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
}
}

并围绕您的示例在问题中表示的内容创建包装函数,例如,

PrefSingleton.getInstance().writePreference("exampleSetting", "off");

实现可能是这样的:

// Within Singleton class

public void writePreference(String key, String value){
Editor e = mMyPreference.edit();
e.putString(key, value);
e.commit();
}

从您的第一个 Activity 开始,以这种方式激活单例类,如下所示:

PrefSingleton.getInstance().Initialize(getApplicationContext());

使用全局静态类可能不是一个好主意,并且违背了编程基础的实践。 但是 话虽如此,除了吹毛求疵之外,它将确保只有 PrefSingleton 类的唯一对象可以存在并且可以访问,而不管代码是什么 Activity 在.

关于java - 有没有办法让 SharedPreferences 在我的整个 Android 应用程序中全局化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com