在Android开发中,如何使用SharedPreferences(简称SP)一个轻量级的数据存储方式

目录

全局SharedPreferences工具类

代码说明:

如何使用这个工具类?


在Android开发中,SharedPreferences(简称SP)是一个轻量级的数据存储方式,常用于保存应用的配置信息或少量的数据。为了便于在全局使用,可以将其封装到一个工具类中。

以下是一个带有详细中文注释的全局SharedPreferences存储工具类的Java代码示例:

全局SharedPreferences工具类

import android.content.Context;
import android.content.SharedPreferences;

public class SPUtils {

    private static SharedPreferences sharedPreferences;
    private static SharedPreferences.Editor editor;

    // 默认的SP文件名
    private static final String SP_NAME = "app_shared_preferences";

    /**
     * 初始化SharedPreferences工具类
     * @param context 上下文对象,通常传入Application的context
     */
    public static void init(Context context) {
        if (sharedPreferences == null) {
            sharedPreferences = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
            editor = sharedPreferences.edit();
        }
    }

    /**
     * 保存字符串类型数据
     * @param key 键名
     * @param value 键值
     */
    public static void putString(String key, String value) {
        editor.putString(key, value);
        editor.apply(); // 异步提交
    }

    /**
     * 获取字符串类型数据
     * @param key 键名
     * @param defaultValue 默认值,当找不到对应key时返回此值
     * @return 返回字符串类型的值
     */
    public static String getString(String key, String defaultValue) {
        return sharedPreferences.getString(key, defaultValue);
    }

    /**
     * 保存整型数据
     * @param key 键名
     * @param value 键值
     */
    public static void putInt(String key, int value) {
        editor.putInt(key, value);
        editor.apply(); // 异步提交
    }

    /**
     * 获取整型数据
     * @param key 键名
     * @param defaultValue 默认值
     * @return 返回整型值
     */
    public static int getInt(String key, int defaultValue) {
        return sharedPreferences.getInt(key, defaultValue);
    }

    /**
     * 保存布尔类型数据
     * @param key 键名
     * @param value 键值
     */
    public static void putBoolean(String key, boolean value) {
        editor.putBoolean(key, value);
        editor.apply(); // 异步提交
    }

    /**
     * 获取布尔类型数据
     * @param key 键名
     * @param defaultValue 默认值
     * @return 返回布尔类型值
     */
    public static boolean getBoolean(String key, boolean defaultValue) {
        return sharedPreferences.getBoolean(key, defaultValue);
    }

    /**
     * 保存长整型数据
     * @param key 键名
     * @param value 键值
     */
    public static void putLong(String key, long value) {
        editor.putLong(key, value);
        editor.apply(); // 异步提交
    }

    /**
     * 获取长整型数据
     * @param key 键名
     * @param defaultValue 默认值
     * @return 返回长整型值
     */
    public static long getLong(String key, long defaultValue) {
        return sharedPreferences.getLong(key, defaultValue);
    }

    /**
     * 保存浮点型数据
     * @param key 键名
     * @param value 键值
     */
    public static void putFloat(String key, float value) {
        editor.putFloat(key, value);
        editor.apply(); // 异步提交
    }

    /**
     * 获取浮点型数据
     * @param key 键名
     * @param defaultValue 默认值
     * @return 返回浮点型值
     */
    public static float getFloat(String key, float defaultValue) {
        return sharedPreferences.getFloat(key, defaultValue);
    }

    /**
     * 移除指定键的数据
     * @param key 键名
     */
    public static void remove(String key) {
        editor.remove(key);
        editor.apply(); // 异步提交
    }

    /**
     * 清除所有保存的数据
     */
    public static void clear() {
        editor.clear();
        editor.apply(); // 异步提交
    }
}

代码说明:

  1. 初始化方法init(Context context)

  • 在应用启动时调用一次该方法来初始化SharedPreferences对象。通常你会在Application类中调用该方法。
  • 使用Context.MODE_PRIVATE模式,这意味着存储的数据仅对本应用可见。
  1. 数据存取方法

  • putString()getString()等方法分别用于存储和获取不同类型的数据(Stringintbooleanlongfloat)。
  • 你可以根据需要扩展支持其他类型的数据。
  • 使用editor.apply()异步提交数据,也可以使用editor.commit()同步提交,但一般推荐使用apply()以提高性能。
  1. 删除与清空数据

  • remove()方法可以删除指定键的数据。
  • clear()方法可以清除所有存储的数据。

如何使用这个工具类?

  1. 在Application中初始化

    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            // 初始化SP工具类
            SPUtils.init(this);
        }
    }
  2. 在任何地方存取数据

    // 保存数据
    SPUtils.putString("username", "张三");
    SPUtils.putInt("age", 25);
    SPUtils.putBoolean("isLoggedIn", true);
    
    // 获取数据
    String username = SPUtils.getString("username", "默认用户");
    int age = SPUtils.getInt("age", 0);
    boolean isLoggedIn = SPUtils.getBoolean("isLoggedIn", false);
    

通过这个工具类,你可以方便地在应用的任何地方进行数据存取,且不必重复编写SharedPreferences相关的代码。 

你可能感兴趣的:(android,java,原生开发,工具类)