返回介绍

3.1 从 SharePreferences 接口说起

发布于 2024-12-23 21:33:34 字数 1869 浏览 0 评论 0 收藏 0

其实讲句实话,SharePreference 的源码没啥深奥的东东,其实质和 ACache 类似,都算时比较独立的东东。分析之前我们还是先来看下 SharePreference 这个类的源码,具体如下:

//你会发现 SharedPreferences 其实是一个接口而已
public interface SharedPreferences {
  //定义一个用于在数据发生改变时调用的监听回调
  public interface OnSharedPreferenceChangeListener {
    //哪个 key 对应的值发生变化
    void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key);
  }

  //编辑 SharedPreferences 对象设定值的接口
  public interface Editor {
    //一些编辑存储基本数据 key-value 的接口方法
    Editor putString(String key, String value);
    Editor putStringSet(String key, Set<String> values);
    Editor putInt(String key, int value);
    Editor putLong(String key, long value);
    Editor putFloat(String key, float value);
    Editor putBoolean(String key, boolean value);
    //删除指定 key 的键值对
    Editor remove(String key);
    //清空所有键值对
    Editor clear();
    //同步的提交到硬件磁盘
    boolean commit();
    //将修改数据原子提交到内存,而后异步提交到硬件磁盘
    void apply();
  }

  //获取指定数据
  Map<String, ?> getAll();
  String getString(String key, String defValue);
  Set<String> getStringSet(String key, Set<String> defValues);
  int getInt(String key, int defValue);
  long getLong(String key, long defValue);
  float getFloat(String key, float defValue);
  boolean getBoolean(String key, boolean defValue);
  boolean contains(String key);

  //针对 preferences 创建一个新的 Editor 对象,通过它你可以修改 preferences 里的数据,并且原子化的将这些数据提交回 SharedPreferences 对象
  Editor edit();
  //注册一个回调函数,当一个 preference 发生变化时调用
  void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener);
  //注销一个之前(注册) 的回调函数
  void unregisterOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener);
}

很明显的可以看见,SharePreference 源码其实是很简单的。既然这里说了 SharePreference 类只是一个接口,那么他一定有自己的实现类的,怎么办呢?我们继续往下看。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文