gpt4 book ai didi

java - SharedPreferences 辅助类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:24 25 4
gpt4 key购买 nike

我正在做 SharedPreferences 帮助程序类以使我的代码看起来不错。

public class SharedPreferencesHelper {
Context context;

public SharedPreferencesHelper(Context context){
this.context = context;
}

public boolean isLogged(String prefs){
return context.getSharedPreferences(prefs,Context.MODE_PRIVATE)
.getBoolean("LOGGED",false);
}

public void setLogged(String prefs){
context.getSharedPreferences(prefs,Context.MODE_PRIVATE)
.edit().putBoolean("LOGGED",true).apply();
}
}

问题是我应该将这些方法设为静态并在每个方法中初始化 SharedPreferences 还是更好地让它不是静态的并从我的其他类中调用一次 SharedPreferencesHelper 类?谢谢

最佳答案

使用这个:

public class SharedPreferencesHelper {

public static final String FILE_NAME = "APP_PREFERENCES";

public static void put(Context context, String key, Object object) {

SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
if (object instanceof String) {
editor.putString(key, (String) object);
} else if (object instanceof Integer) {
editor.putInt(key, (Integer) object);
} else if (object instanceof Boolean) {
editor.putBoolean(key, (Boolean) object);
} else if (object instanceof Float) {
editor.putFloat(key, (Float) object);
} else if (object instanceof Long) {
editor.putLong(key, (Long) object);
} else {
editor.putString(key, object.toString());
}
SharedPreferencesCompat.apply(editor);
}

public static Object get(Context context, String key, Object defaultObject) {

SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);

if (defaultObject instanceof String) {
return sp.getString(key, (String) defaultObject);
} else if (defaultObject instanceof Integer) {
return sp.getInt(key, (Integer) defaultObject);
} else if (defaultObject instanceof Boolean) {
return sp.getBoolean(key, (Boolean) defaultObject);
} else if (defaultObject instanceof Float) {
return sp.getFloat(key, (Float) defaultObject);
} else if (defaultObject instanceof Long) {
return sp.getLong(key, (Long) defaultObject);
}

return null;
}

public static void remove(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
SharedPreferencesCompat.apply(editor);
}

public static void clear(Context context) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
SharedPreferencesCompat.apply(editor);
}

public static boolean contains(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
return sp.contains(key);
}

public static Map<String, ?> getAll(Context context) {
SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE);
return sp.getAll();
}



private static class SharedPreferencesCompat {
private static final Method sApplyMethod = findApplyMethod();

@SuppressWarnings({"unchecked", "rawtypes"})
private static Method findApplyMethod() {
try {
Class clz = SharedPreferences.Editor.class;
return clz.getMethod("apply");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}

return null;
}

public static void apply(SharedPreferences.Editor editor) {
try {
if (sApplyMethod != null) {
sApplyMethod.invoke(editor);
return;
}
} catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
editor.commit();


}
}
}

关于java - SharedPreferences 辅助类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912227/

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