gpt4 book ai didi

android - 如何以更通用的方式将 SharedPreferences 用作 LocalStore?

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

初入Android世界,日新月异;)我想分享有关常见用法的示例。

下面是关于将 SharedPreferences 与通用 LocalStore 类一起使用的示例。

创建一个公共(public)类以供您的主要 Activity 或任何子 Activity 使用。

    public class LocalStore {

private static final String TAG = "LocalStore";
private static final String PREF_FILE_NAME = "userprefs";

public static void clear(Context context) {
clear(context, "unknown");
}
public static void clear(Context context, String caller) {
Editor editor =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
Log.d(TAG, "caller:"+caller + "|clear LocalStore");
}

public static boolean setCustomBooleanData(String key, boolean value, Context context) {
Editor editor =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.putBoolean(key, value);

return editor.commit();
}
public static boolean getCustomBooleanData(String key, Context context) {
SharedPreferences savedSession =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

return (savedSession.getBoolean(key, false));
}

public static boolean setCustomStringData(String key, String value, Context context) {
Editor editor =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.putString(key, value);

return editor.commit();
}
public static String getCustomStringData(String key, Context context) {
SharedPreferences savedSession =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

return (savedSession.getString(key, null));
}


public static boolean isCustomStringExistInLocal(String customKey, Context context) {
SharedPreferences savedSession =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

return (savedSession.getString(customKey, null))==null?false:true;
}

public static boolean saveObject(String objKey, Serializable dataObj, Context context) {
Editor editor =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.putString(objKey, ObjectSerializer.serialize(dataObj) );

Log.d(TAG, "savedObject| objKey:"+objKey+"/" + dataObj.toString());

return editor.commit();
}
public static Object getObject(String objKey, Context context) {
SharedPreferences savedSession =
context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);

Object dataObj = ObjectSerializer.deserialize(savedSession.getString(objKey, null));

return dataObj;
}

}

注意:您可以使用 here 中的 ObjectSerializer

尽情享受吧!

补充更新:我实现了一个库来使用 MEMDISKCACHE 和 SHAREDPREF 作为 GENERIC_STORE任何有兴趣的人都可以使用它
-> https://github.com/wareninja/generic-store-for-android

最佳答案

假设您想要一些关于如何进一步改进它的提示,给您。

  • 通常 Android 遵循将 Context 变量作为第一个参数的约定。在创建任何通用库时执行此操作是一种很好的做法。
  • 如果你想让它更通用,为什么不试试方法重载呢?它将在设置值时为开发人员提供更大的灵 active ,就像在 Intent 类中处理额外内容的方式一样。

例如:

public static boolean setData(Context, String key, boolean value) {
Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.putBoolean(key, value);
return editor.commit();
}
public static boolean setData(Context, String key, String value) {
Editor editor = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE).edit();
editor.putString(key, value);
return editor.commit();
}

所以你可以像这样简单地调用重载函数:

setData(this, "myBoolean", true);
setData(this, "myString", "Its Awesome");

关于android - 如何以更通用的方式将 SharedPreferences 用作 LocalStore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064901/

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