我知道,我知道,我会发炎,被扔进地狱的余烬中……
使用包含设置的单例类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();
}
从您的第一个活动开始,以这种方式激活单例类,如下所示:
PrefSingleton.getInstance().Initialize(getApplicationContext());
我冒险投反对票的原因是,使用全局静态类可能是一个坏主意,并且违背了编程基础的实践。但是话虽如此,除了挑剔之外,它将确保只有一个也是唯一的类对象PrefSingleton
可以存在并且无论代码处于什么活动都可以访问。